Flutter Engine
 
Loading...
Searching...
No Matches
flutter::DlMatrixImageFilter Class Referencefinal

#include <dl_matrix_image_filter.h>

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

Public Member Functions

 DlMatrixImageFilter (const DlMatrix &matrix, DlImageSampling sampling)
 
 DlMatrixImageFilter (const DlMatrixImageFilter *filter)
 
 DlMatrixImageFilter (const DlMatrixImageFilter &filter)
 
std::shared_ptr< DlImageFiltershared () const override
 
DlImageFilterType type () const override
 
size_t size () const override
 
const DlMatrixmatrix () const
 
DlImageSampling sampling () const
 
const DlMatrixImageFilterasMatrix () 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
 
- Public Member Functions inherited from flutter::DlImageFilter
virtual const DlBlurImageFilterasBlur () const
 
virtual const DlDilateImageFilterasDilate () const
 
virtual const DlErodeImageFilterasErode () 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 (const DlMatrix &matrix, DlImageSampling sampling)
 
- 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_matrix_image_filter.h.

Constructor & Destructor Documentation

◆ DlMatrixImageFilter() [1/3]

flutter::DlMatrixImageFilter::DlMatrixImageFilter ( const DlMatrix matrix,
DlImageSampling  sampling 
)
inline

Definition at line 16 of file dl_matrix_image_filter.h.

17 : matrix_(matrix), sampling_(sampling) {}
const DlMatrix & matrix() const

◆ DlMatrixImageFilter() [2/3]

flutter::DlMatrixImageFilter::DlMatrixImageFilter ( const DlMatrixImageFilter filter)
inlineexplicit

Definition at line 18 of file dl_matrix_image_filter.h.

19 : DlMatrixImageFilter(filter->matrix_, filter->sampling_) {}
DlMatrixImageFilter(const DlMatrix &matrix, DlImageSampling sampling)

◆ DlMatrixImageFilter() [3/3]

flutter::DlMatrixImageFilter::DlMatrixImageFilter ( const DlMatrixImageFilter filter)
inline

Definition at line 20 of file dl_matrix_image_filter.h.

21 : DlMatrixImageFilter(&filter) {}

Member Function Documentation

◆ asMatrix()

const DlMatrixImageFilter * flutter::DlMatrixImageFilter::asMatrix ( ) const
inlineoverridevirtual

Reimplemented from flutter::DlImageFilter.

Definition at line 36 of file dl_matrix_image_filter.h.

36{ return this; }

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

◆ equals_()

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

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 54 of file dl_matrix_image_filter.cc.

54 {
56 auto that = static_cast<const DlMatrixImageFilter*>(&other);
57 return (matrix_ == that->matrix_ && sampling_ == that->sampling_);
58}
#define FML_DCHECK(condition)
Definition logging.h:122

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

◆ get_input_device_bounds()

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

Implements flutter::DlImageFilter.

Definition at line 38 of file dl_matrix_image_filter.cc.

41 {
42 DlMatrix matrix = ctm * matrix_;
43 if (!matrix.IsInvertible()) {
44 input_bounds = output_bounds;
45 return nullptr;
46 }
47 DlMatrix inverse = ctm * matrix.Invert();
48 DlRect bounds = DlRect::Make(output_bounds);
49 bounds = bounds.TransformAndClipBounds(inverse);
50 input_bounds = DlIRect::RoundOut(bounds);
51 return &input_bounds;
52}
impeller::Matrix DlMatrix
impeller::Rect DlRect
bool IsInvertible() const
Definition matrix.h:321
Matrix Invert() const
Definition matrix.cc:99
static constexpr std::enable_if_t< std::is_floating_point_v< FT >, TRect > Make(const TRect< U > &rect)
Definition rect.h:157
RoundOut(const TRect< U > &r)
Definition rect.h:679

References impeller::Matrix::Invert(), impeller::Matrix::IsInvertible(), impeller::TRect< Scalar >::Make(), matrix(), impeller::TRect< T >::RoundOut(), and impeller::TRect< T >::TransformAndClipBounds().

◆ Make()

std::shared_ptr< DlImageFilter > flutter::DlMatrixImageFilter::Make ( const DlMatrix matrix,
DlImageSampling  sampling 
)
static

Definition at line 9 of file dl_matrix_image_filter.cc.

11 {
12 if (matrix.IsFinite() && !matrix.IsIdentity()) {
13 return std::make_shared<DlMatrixImageFilter>(matrix, sampling);
14 }
15 return nullptr;
16}
constexpr bool IsIdentity() const
Definition matrix.h:467
bool IsFinite() const
Definition matrix.h:404

References impeller::Matrix::IsFinite(), impeller::Matrix::IsIdentity(), matrix(), and sampling().

Referenced by flutter::ImageFilter::initMatrix(), flutter::DlImageFilter::MakeMatrix(), impeller::interop::ImageFilter::MakeMatrix(), and impeller::testing::TEST_P().

◆ map_device_bounds()

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

Implements flutter::DlImageFilter.

Definition at line 24 of file dl_matrix_image_filter.cc.

26 {
27 if (!ctm.IsInvertible()) {
28 output_bounds = input_bounds;
29 return nullptr;
30 }
31 DlMatrix matrix = ctm * matrix_ * ctm.Invert();
32 DlRect device_rect =
34 output_bounds = DlIRect::RoundOut(device_rect);
35 return &output_bounds;
36}
constexpr TRect TransformAndClipBounds(const Matrix &transform) const
Creates a new bounding box that contains this transformed rectangle, clipped against the near clippin...
Definition rect.h:438

References impeller::Matrix::Invert(), impeller::Matrix::IsInvertible(), impeller::TRect< Scalar >::Make(), matrix(), impeller::TRect< T >::RoundOut(), and impeller::TRect< T >::TransformAndClipBounds().

◆ map_local_bounds()

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

Implements flutter::DlImageFilter.

Definition at line 18 of file dl_matrix_image_filter.cc.

19 {
20 output_bounds = input_bounds.TransformAndClipBounds(matrix_);
21 return &output_bounds;
22}

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

◆ matrix()

const DlMatrix & flutter::DlMatrixImageFilter::matrix ( ) const
inline

◆ modifies_transparent_black()

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

Implements flutter::DlImageFilter.

Definition at line 38 of file dl_matrix_image_filter.h.

38{ return false; }

◆ sampling()

DlImageSampling flutter::DlMatrixImageFilter::sampling ( ) const
inline

◆ shared()

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

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 26 of file dl_matrix_image_filter.h.

26 {
27 return std::make_shared<DlMatrixImageFilter>(this);
28 }

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

◆ size()

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

Implements flutter::DlAttribute< DlImageFilter, DlImageFilterType >.

Definition at line 31 of file dl_matrix_image_filter.h.

31{ return sizeof(*this); }

◆ type()

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

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