Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::DlBlurImageFilter Class Referencefinal

#include <dl_blur_image_filter.h>

Inheritance diagram for flutter::DlBlurImageFilter:
flutter::DlImageFilter flutter::DlAttribute< DlImageFilter, DlImageFilterType >

Public Member Functions

 DlBlurImageFilter (DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode, std::optional< DlRect > bounds=std::nullopt)
 Creates an ImageFilter that applies a Gaussian blur to its input.
 
 DlBlurImageFilter (const DlBlurImageFilter *filter)
 
 DlBlurImageFilter (const DlBlurImageFilter &filter)
 
std::shared_ptr< DlImageFiltershared () const override
 
DlImageFilterType type () const override
 
size_t size () const override
 
const DlBlurImageFilterasBlur () const override
 
bool modifies_transparent_black () const override
 
DlRectmap_local_bounds (const DlRect &input_bounds, DlRect &output_bounds) const override
 
DlIRectmap_device_bounds (const DlIRect &input_bounds, const DlMatrix &ctm, DlIRect &output_bounds) const override
 
DlIRectget_input_device_bounds (const DlIRect &output_bounds, const DlMatrix &ctm, DlIRect &input_bounds) const override
 
DlScalar sigma_x () const
 
DlScalar sigma_y () const
 
DlTileMode tile_mode () const
 
std::optional< DlRectbounds () const
 
- Public Member Functions inherited from flutter::DlImageFilter
virtual const DlDilateImageFilterasDilate () const
 
virtual const DlErodeImageFilterasErode () const
 
virtual const DlMatrixImageFilterasMatrix () const
 
virtual const DlLocalMatrixImageFilterasLocalMatrix () const
 
virtual std::shared_ptr< DlImageFiltermakeWithLocalMatrix (const DlMatrix &matrix) const
 
virtual const DlComposeImageFilterasCompose () const
 
virtual const DlColorFilterImageFilterasColorFilter () const
 
virtual const DlRuntimeEffectImageFilterasRuntimeEffectFilter () const
 
virtual MatrixCapability matrix_capability () const
 
- Public Member Functions inherited from flutter::DlAttribute< DlImageFilter, DlImageFilterType >
bool operator== (DlImageFilter const &other) const
 
bool operator!= (DlImageFilter const &other) const
 
virtual ~DlAttribute ()=default
 

Static Public Member Functions

static std::shared_ptr< DlImageFilterMake (DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode, std::optional< DlRect > bounds=std::nullopt)
 
- Static Public Member Functions inherited from flutter::DlImageFilter
static std::shared_ptr< DlImageFilterMakeBlur (DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode)
 
static std::shared_ptr< DlImageFilterMakeDilate (DlScalar radius_x, DlScalar radius_y)
 
static std::shared_ptr< DlImageFilterMakeErode (DlScalar radius_x, DlScalar radius_y)
 
static std::shared_ptr< DlImageFilterMakeMatrix (const DlMatrix &matrix, DlImageSampling sampling)
 
static std::shared_ptr< DlImageFilterMakeRuntimeEffect (sk_sp< DlRuntimeEffect > runtime_effect, std::vector< std::shared_ptr< DlColorSource > > samplers, std::shared_ptr< std::vector< uint8_t > > uniform_data)
 
static std::shared_ptr< DlImageFilterMakeColorFilter (const std::shared_ptr< const DlColorFilter > &filter)
 
static std::shared_ptr< DlImageFilterMakeCompose (const std::shared_ptr< DlImageFilter > &outer, const std::shared_ptr< DlImageFilter > &inner)
 

Protected Member Functions

bool equals_ (const DlImageFilter &other) const override
 

Additional Inherited Members

- Public Types inherited from flutter::DlImageFilter
enum class  MatrixCapability {
  kTranslate ,
  kScaleTranslate ,
  kComplex
}
 
- Static Protected Member Functions inherited from flutter::DlImageFilter
static DlVector2 map_vectors_affine (const DlMatrix &ctm, DlScalar x, DlScalar y)
 
static DlIRectinset_device_bounds (const DlIRect &input_bounds, DlScalar radius_x, DlScalar radius_y, const DlMatrix &ctm, DlIRect &output_bounds)
 
static DlIRectoutset_device_bounds (const DlIRect &input_bounds, DlScalar radius_x, DlScalar radius_y, const DlMatrix &ctm, DlIRect &output_bounds)
 

Detailed Description

Definition at line 14 of file dl_blur_image_filter.h.

Constructor & Destructor Documentation

◆ DlBlurImageFilter() [1/3]

flutter::DlBlurImageFilter::DlBlurImageFilter ( DlScalar  sigma_x,
DlScalar  sigma_y,
DlTileMode  tile_mode,
std::optional< DlRect bounds = std::nullopt 
)
inline

Creates an ImageFilter that applies a Gaussian blur to its input.

Parameters
sigma_xThe standard deviation of the Gaussian kernel in the X direction.
sigma_yThe standard deviation of the Gaussian kernel in the Y direction.
boundsAn optional rectangle that enables "bounded blur" mode.
tile_modeDefines how to sample from areas outside the bounds of the input texture.

If bounds is std::nullopt, a standard Gaussian blur is applied and to the entire surface.

If bounds is not std::nullopt, the filter performs a "bounded blur": the image filter substitutes transparent black for any sample it reads from outside the defined bounding rectangle. The final weighted sum is then divided by the total weight of the non-transparent samples (the effective alpha), resulting in opaque output.

The bounded mode prevents color bleeding from content adjacent to the bounds into the blurred area, and is typically used when the blur must be strictly contained within a clipped region, such as for iOS-style frosted glass effects.

The bounds rectangle is specified in the canvas's current coordinate space and is affected by the current transform; consequently, the bounds may not be axis-aligned in the final canvas coordinates.

Definition at line 45 of file dl_blur_image_filter.h.

49 : sigma_x_(sigma_x),
50 sigma_y_(sigma_y),
51 tile_mode_(tile_mode),
52 bounds_(bounds) {}
std::optional< DlRect > bounds() const

◆ DlBlurImageFilter() [2/3]

flutter::DlBlurImageFilter::DlBlurImageFilter ( const DlBlurImageFilter filter)
inlineexplicit

Definition at line 53 of file dl_blur_image_filter.h.

54 : DlBlurImageFilter(filter->sigma_x_,
55 filter->sigma_y_,
56 filter->tile_mode_,
57 filter->bounds_) {}
DlBlurImageFilter(DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode, std::optional< DlRect > bounds=std::nullopt)
Creates an ImageFilter that applies a Gaussian blur to its input.

◆ DlBlurImageFilter() [3/3]

flutter::DlBlurImageFilter::DlBlurImageFilter ( const DlBlurImageFilter filter)
inline

Definition at line 58 of file dl_blur_image_filter.h.

59 : DlBlurImageFilter(&filter) {}

Member Function Documentation

◆ asBlur()

const DlBlurImageFilter * flutter::DlBlurImageFilter::asBlur ( ) const
inlineoverridevirtual

Reimplemented from flutter::DlImageFilter.

Definition at line 74 of file dl_blur_image_filter.h.

74{ return this; }

Referenced by flutter::testing::TEST().

◆ bounds()

std::optional< DlRect > flutter::DlBlurImageFilter::bounds ( ) const
inline

Definition at line 92 of file dl_blur_image_filter.h.

92{ return bounds_; }

Referenced by Make().

◆ equals_()

bool flutter::DlBlurImageFilter::equals_ ( const DlImageFilter other) const
overrideprotectedvirtual

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 47 of file dl_blur_image_filter.cc.

47 {
48 FML_DCHECK(other.type() == DlImageFilterType::kBlur);
49 auto that = static_cast<const DlBlurImageFilter*>(&other);
50 return (DlScalarNearlyEqual(sigma_x_, that->sigma_x_) &&
51 DlScalarNearlyEqual(sigma_y_, that->sigma_y_) &&
52 tile_mode_ == that->tile_mode_ && bounds_ == that->bounds_);
53}
#define FML_DCHECK(condition)
Definition logging.h:122
constexpr bool DlScalarNearlyEqual(DlScalar x, DlScalar y, DlScalar tolerance=kEhCloseEnough)

References flutter::DlScalarNearlyEqual(), FML_DCHECK, flutter::kBlur, and flutter::DlAttribute< D, T >::type().

◆ get_input_device_bounds()

DlIRect * flutter::DlBlurImageFilter::get_input_device_bounds ( const DlIRect output_bounds,
const DlMatrix ctm,
DlIRect input_bounds 
) const
overridevirtual

Implements flutter::DlImageFilter.

Definition at line 39 of file dl_blur_image_filter.cc.

42 {
43 // Blurs are symmetric in terms of output-for-input and input-for-output
44 return map_device_bounds(output_bounds, ctm, input_bounds);
45}
DlIRect * map_device_bounds(const DlIRect &input_bounds, const DlMatrix &ctm, DlIRect &output_bounds) const override

References map_device_bounds().

◆ Make()

std::shared_ptr< DlImageFilter > flutter::DlBlurImageFilter::Make ( DlScalar  sigma_x,
DlScalar  sigma_y,
DlTileMode  tile_mode,
std::optional< DlRect bounds = std::nullopt 
)
static

Definition at line 9 of file dl_blur_image_filter.cc.

13 {
14 if (!std::isfinite(sigma_x) || !std::isfinite(sigma_y)) {
15 return nullptr;
16 }
17 if (sigma_x < SK_ScalarNearlyZero && sigma_y < SK_ScalarNearlyZero) {
18 return nullptr;
19 }
20 sigma_x = (sigma_x < SK_ScalarNearlyZero) ? 0 : sigma_x;
21 sigma_y = (sigma_y < SK_ScalarNearlyZero) ? 0 : sigma_y;
22 return std::make_shared<DlBlurImageFilter>(sigma_x, sigma_y, tile_mode,
23 bounds);
24}

References bounds(), sigma_x(), sigma_y(), and tile_mode().

Referenced by flutter::ImageFilter::filter(), flutter::ImageFilter::initBlur(), flutter::DlImageFilter::MakeBlur(), impeller::interop::ImageFilter::MakeBlur(), flutter::testing::TEST(), and impeller::testing::TEST_P().

◆ map_device_bounds()

DlIRect * flutter::DlBlurImageFilter::map_device_bounds ( const DlIRect input_bounds,
const DlMatrix ctm,
DlIRect output_bounds 
) const
overridevirtual

Implements flutter::DlImageFilter.

Definition at line 32 of file dl_blur_image_filter.cc.

34 {
35 return outset_device_bounds(input_bounds, sigma_x_ * 3.0f, sigma_y_ * 3.0f,
36 ctm, output_bounds);
37}
static DlIRect * outset_device_bounds(const DlIRect &input_bounds, DlScalar radius_x, DlScalar radius_y, const DlMatrix &ctm, DlIRect &output_bounds)

References flutter::DlImageFilter::outset_device_bounds().

Referenced by get_input_device_bounds().

◆ map_local_bounds()

DlRect * flutter::DlBlurImageFilter::map_local_bounds ( const DlRect input_bounds,
DlRect output_bounds 
) const
overridevirtual

Implements flutter::DlImageFilter.

Definition at line 26 of file dl_blur_image_filter.cc.

27 {
28 output_bounds = input_bounds.Expand(sigma_x_ * 3.0f, sigma_y_ * 3.0f);
29 return &output_bounds;
30}

References impeller::TRect< T >::Expand().

◆ modifies_transparent_black()

bool flutter::DlBlurImageFilter::modifies_transparent_black ( ) const
inlineoverridevirtual

Implements flutter::DlImageFilter.

Definition at line 76 of file dl_blur_image_filter.h.

76{ return false; }

◆ shared()

std::shared_ptr< DlImageFilter > flutter::DlBlurImageFilter::shared ( ) const
inlineoverridevirtual

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 67 of file dl_blur_image_filter.h.

67 {
68 return std::make_shared<DlBlurImageFilter>(this);
69 }

Referenced by flutter::testing::TEST(), and impeller::testing::TEST_P().

◆ sigma_x()

DlScalar flutter::DlBlurImageFilter::sigma_x ( ) const
inline

◆ sigma_y()

DlScalar flutter::DlBlurImageFilter::sigma_y ( ) const
inline

◆ size()

size_t flutter::DlBlurImageFilter::size ( ) const
inlineoverridevirtual

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 72 of file dl_blur_image_filter.h.

72{ return sizeof(*this); }

◆ tile_mode()

◆ type()

DlImageFilterType flutter::DlBlurImageFilter::type ( ) const
inlineoverridevirtual

The documentation for this class was generated from the following files: