Flutter Engine
 
Loading...
Searching...
No Matches
flutter::ImageFilter Class Reference

#include <image_filter.h>

Inheritance diagram for flutter::ImageFilter:
flutter::RefCountedDartWrappable< ImageFilter > fml::RefCountedThreadSafe< T > tonic::DartWrappable fml::internal::RefCountedThreadSafeBase

Public Member Functions

 ~ImageFilter () override
 
void initBlur (double sigma_x, double sigma_y, int tile_mode_index)
 
void initDilate (double radius_x, double radius_y)
 
void initErode (double radius_x, double radius_y)
 
void initMatrix (const tonic::Float64List &matrix4, int filter_quality_index)
 
void initColorFilter (ColorFilter *colorFilter)
 
void initComposeFilter (ImageFilter *outer, ImageFilter *inner)
 
void initShader (ReusableFragmentShader *shader)
 
const std::shared_ptr< DlImageFilterfilter (DlTileMode mode) const
 
- Public Member Functions inherited from flutter::RefCountedDartWrappable< ImageFilter >
virtual void RetainDartWrappableReference () const override
 
virtual void ReleaseDartWrappableReference () const override
 
- Public Member Functions inherited from fml::RefCountedThreadSafe< T >
void Release () const
 
- Public Member Functions inherited from fml::internal::RefCountedThreadSafeBase
void AddRef () const
 
bool HasOneRef () const
 
void AssertHasOneRef () const
 
- Public Member Functions inherited from tonic::DartWrappable
 DartWrappable ()
 
virtual const DartWrapperInfoGetDartWrapperInfo () const =0
 
Dart_Handle CreateDartWrapper (DartState *dart_state)
 
void AssociateWithDartWrapper (Dart_Handle wrappable)
 
void ClearDartWrapper ()
 
Dart_WeakPersistentHandle dart_wrapper () const
 

Static Public Member Functions

static void Create (Dart_Handle wrapper)
 
static DlImageSampling SamplingFromIndex (int filterQualityIndex)
 
static DlFilterMode FilterModeFromIndex (int index)
 
static bool equals (ImageFilter *a, ImageFilter *b)
 
static void RegisterNatives (tonic::DartLibraryNatives *natives)
 

Additional Inherited Members

- Public Types inherited from tonic::DartWrappable
enum  DartNativeFields {
  kPeerIndex ,
  kNumberOfNativeFields
}
 
- Protected Member Functions inherited from fml::RefCountedThreadSafe< T >
 RefCountedThreadSafe ()
 
 ~RefCountedThreadSafe ()
 
- Protected Member Functions inherited from fml::internal::RefCountedThreadSafeBase
 RefCountedThreadSafeBase ()
 
 ~RefCountedThreadSafeBase ()
 
bool Release () const
 
void Adopt ()
 
- Protected Member Functions inherited from tonic::DartWrappable
virtual ~DartWrappable ()
 
- Static Protected Member Functions inherited from tonic::DartWrappable
static Dart_PersistentHandle GetTypeForWrapper (tonic::DartState *dart_state, const tonic::DartWrapperInfo &wrapper_info)
 

Detailed Description

Definition at line 21 of file image_filter.h.

Constructor & Destructor Documentation

◆ ~ImageFilter()

flutter::ImageFilter::~ImageFilter ( )
override

Definition at line 56 of file image_filter.cc.

56{}

Member Function Documentation

◆ Create()

void flutter::ImageFilter::Create ( Dart_Handle  wrapper)
static

Definition at line 23 of file image_filter.cc.

23 {
25 auto res = fml::MakeRefCounted<ImageFilter>();
26 res->AssociateWithDartWrapper(wrapper);
27}
static void ThrowIfUIOperationsProhibited()

References flutter::UIDartState::ThrowIfUIOperationsProhibited().

◆ equals()

bool flutter::ImageFilter::equals ( ImageFilter a,
ImageFilter b 
)
static

Definition at line 128 of file image_filter.cc.

128 {
129 return a->filter_ == b->filter_;
130}

◆ filter()

const std::shared_ptr< DlImageFilter > flutter::ImageFilter::filter ( DlTileMode  mode) const

Definition at line 58 of file image_filter.cc.

59 {
60 if (is_dynamic_tile_mode_) {
61 FML_DCHECK(filter_.get() != nullptr);
62 const DlBlurImageFilter* blur_filter = filter_->asBlur();
63 FML_DCHECK(blur_filter != nullptr);
64 if (blur_filter->tile_mode() != mode) {
65 return DlBlurImageFilter::Make(blur_filter->sigma_x(),
66 blur_filter->sigma_y(), mode);
67 }
68 }
69 return filter_;
70}
static std::shared_ptr< DlImageFilter > Make(DlScalar sigma_x, DlScalar sigma_y, DlTileMode tile_mode)
#define FML_DCHECK(condition)
Definition logging.h:122

References FML_DCHECK, flutter::DlBlurImageFilter::Make(), flutter::mode, flutter::DlBlurImageFilter::sigma_x(), flutter::DlBlurImageFilter::sigma_y(), and flutter::DlBlurImageFilter::tile_mode().

Referenced by initComposeFilter(), flutter::Paint::paint(), flutter::SceneBuilder::pushBackdropFilter(), and flutter::SceneBuilder::pushImageFilter().

◆ FilterModeFromIndex()

DlFilterMode flutter::ImageFilter::FilterModeFromIndex ( int  index)
static

Definition at line 47 of file image_filter.cc.

47 {
48 if (filterQualityIndex <= 0) {
50 }
52}

References flutter::kLinear, and flutter::kNearest.

◆ initBlur()

void flutter::ImageFilter::initBlur ( double  sigma_x,
double  sigma_y,
int  tile_mode_index 
)

Definition at line 72 of file image_filter.cc.

74 {
75 DlTileMode tile_mode;
76 bool is_dynamic;
77 if (tile_mode_index < 0) {
78 is_dynamic = true;
79 tile_mode = DlTileMode::kClamp;
80 } else {
81 is_dynamic = false;
82 tile_mode = static_cast<DlTileMode>(tile_mode_index);
83 }
84 filter_ = DlBlurImageFilter::Make(SafeNarrow(sigma_x), SafeNarrow(sigma_y),
85 tile_mode);
86 // If it was a NOP filter, don't bother processing dynamic substitutions
87 // (They'd fail the FML_DCHECK anyway)
88 is_dynamic_tile_mode_ = is_dynamic && filter_;
89}
static float SafeNarrow(double value)

References flutter::kClamp, flutter::DlBlurImageFilter::Make(), and flutter::SafeNarrow().

◆ initColorFilter()

void flutter::ImageFilter::initColorFilter ( ColorFilter colorFilter)

Definition at line 110 of file image_filter.cc.

110 {
111 FML_DCHECK(colorFilter);
112 is_dynamic_tile_mode_ = false;
113 filter_ = DlColorFilterImageFilter::Make(colorFilter->filter());
114}
static std::shared_ptr< DlImageFilter > Make(const std::shared_ptr< const DlColorFilter > &filter)

References flutter::ColorFilter::filter(), FML_DCHECK, and flutter::DlColorFilterImageFilter::Make().

◆ initComposeFilter()

void flutter::ImageFilter::initComposeFilter ( ImageFilter outer,
ImageFilter inner 
)

Definition at line 116 of file image_filter.cc.

116 {
117 FML_DCHECK(outer && inner);
118 is_dynamic_tile_mode_ = false;
119 filter_ = DlComposeImageFilter::Make(outer->filter(DlTileMode::kClamp),
120 inner->filter(DlTileMode::kClamp));
121}
static std::shared_ptr< DlImageFilter > Make(const std::shared_ptr< DlImageFilter > &outer, const std::shared_ptr< DlImageFilter > &inner)

References filter(), FML_DCHECK, flutter::kClamp, and flutter::DlComposeImageFilter::Make().

◆ initDilate()

void flutter::ImageFilter::initDilate ( double  radius_x,
double  radius_y 
)

Definition at line 91 of file image_filter.cc.

91 {
92 is_dynamic_tile_mode_ = false;
93 filter_ =
95}
static std::shared_ptr< DlImageFilter > Make(DlScalar radius_x, DlScalar radius_y)

References flutter::DlDilateImageFilter::Make(), and flutter::SafeNarrow().

◆ initErode()

void flutter::ImageFilter::initErode ( double  radius_x,
double  radius_y 
)

Definition at line 97 of file image_filter.cc.

97 {
98 is_dynamic_tile_mode_ = false;
99 filter_ =
100 DlErodeImageFilter::Make(SafeNarrow(radius_x), SafeNarrow(radius_y));
101}
static std::shared_ptr< DlImageFilter > Make(DlScalar radius_x, DlScalar radius_y)

References flutter::DlErodeImageFilter::Make(), and flutter::SafeNarrow().

◆ initMatrix()

void flutter::ImageFilter::initMatrix ( const tonic::Float64List &  matrix4,
int  filter_quality_index 
)

Definition at line 103 of file image_filter.cc.

104 {
105 is_dynamic_tile_mode_ = false;
106 auto sampling = ImageFilter::SamplingFromIndex(filterQualityIndex);
107 filter_ = DlMatrixImageFilter::Make(ToDlMatrix(matrix4), sampling);
108}
static std::shared_ptr< DlImageFilter > Make(const DlMatrix &matrix, DlImageSampling sampling)
static DlImageSampling SamplingFromIndex(int filterQualityIndex)
DlMatrix ToDlMatrix(const SkMatrix &matrix)

References flutter::DlMatrixImageFilter::Make(), SamplingFromIndex(), and flutter::ToDlMatrix().

◆ initShader()

void flutter::ImageFilter::initShader ( ReusableFragmentShader shader)

Definition at line 123 of file image_filter.cc.

123 {
124 FML_DCHECK(shader);
125 filter_ = shader->as_image_filter();
126}

References flutter::ReusableFragmentShader::as_image_filter(), and FML_DCHECK.

◆ RegisterNatives()

static void flutter::ImageFilter::RegisterNatives ( tonic::DartLibraryNatives natives)
static

◆ SamplingFromIndex()

DlImageSampling flutter::ImageFilter::SamplingFromIndex ( int  filterQualityIndex)
static

Definition at line 36 of file image_filter.cc.

36 {
37 if (filterQualityIndex < 0) {
38 return kFilterQualities.front();
39 } else if (static_cast<size_t>(filterQualityIndex) >=
40 kFilterQualities.size()) {
41 return kFilterQualities.back();
42 } else {
43 return kFilterQualities[filterQualityIndex];
44 }
45}
static const std::array< DlImageSampling, 4 > kFilterQualities

References flutter::kFilterQualities.

Referenced by flutter::SceneBuilder::addTexture(), initMatrix(), flutter::ImageShader::initWithImage(), and flutter::SceneBuilder::pushShaderMask().


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