Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
flutter::ImageShader Class Reference

#include <image_shader.h>

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

Public Member Functions

 ~ImageShader () override
 
Dart_Handle initWithImage (CanvasImage *image, DlTileMode tmx, DlTileMode tmy, int filter_quality_index, Dart_Handle matrix_handle)
 
std::shared_ptr< DlColorSourceshader (DlImageSampling) override
 
int width ()
 
int height ()
 
void dispose ()
 
- Public Member Functions inherited from flutter::Shader
 ~Shader () override
 
- Public Member Functions inherited from flutter::RefCountedDartWrappable< Shader >
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)
 

Additional Inherited Members

- Public Types inherited from tonic::DartWrappable
enum  DartNativeFields { kPeerIndex , kNumberOfNativeFields }
 
- Protected Member Functions inherited from flutter::Shader
 Shader ()
 
- 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 19 of file image_shader.h.

Constructor & Destructor Documentation

◆ ~ImageShader()

flutter::ImageShader::~ImageShader ( )
overridedefault

Member Function Documentation

◆ Create()

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

Definition at line 21 of file image_shader.cc.

21 {
22 auto res = fml::MakeRefCounted<ImageShader>();
23 res->AssociateWithDartWrapper(wrapper);
24}

◆ dispose()

void flutter::ImageShader::dispose ( )

Definition at line 65 of file image_shader.cc.

65 {
66 cached_shader_.reset();
67 image_.reset();
69}

◆ height()

int flutter::ImageShader::height ( )

Definition at line 61 of file image_shader.cc.

61 {
62 return image_->height();
63}

◆ initWithImage()

Dart_Handle flutter::ImageShader::initWithImage ( CanvasImage image,
DlTileMode  tmx,
DlTileMode  tmy,
int  filter_quality_index,
Dart_Handle  matrix_handle 
)

Definition at line 26 of file image_shader.cc.

30 {
31 // CanvasImage should have already checked for a UI thread safe image.
32 if (!image || !image->image()->isUIThreadSafe()) {
33 return ToDart("ImageShader constructor called with non-genuine Image.");
34 }
35
36 image_ = image->image();
37 tonic::Float64List matrix4(matrix_handle);
38 SkMatrix local_matrix = ToSkMatrix(matrix4);
39 matrix4.Release();
40 sampling_is_locked_ = filter_quality_index >= 0;
42 sampling_is_locked_ ? ImageFilter::SamplingFromIndex(filter_quality_index)
44 cached_shader_ = std::make_shared<DlImageColorSource>(
45 image_, tmx, tmy, sampling, &local_matrix);
46 FML_DCHECK(cached_shader_->isUIThreadSafe());
47 return Dart_Null();
48}
static DlImageSampling SamplingFromIndex(int filterQualityIndex)
DART_EXPORT Dart_Handle Dart_Null(void)
sk_sp< SkImage > image
Definition examples.cpp:29
#define FML_DCHECK(condition)
Definition logging.h:103
SkSamplingOptions sampling
Definition SkRecords.h:337
SkMatrix ToSkMatrix(const tonic::Float64List &matrix4)
Definition matrix.cc:32
Dart_Handle ToDart(const T &object)
SkTileMode tmy
SkTileMode tmx

◆ shader()

std::shared_ptr< DlColorSource > flutter::ImageShader::shader ( DlImageSampling  sampling)
overridevirtual

Implements flutter::Shader.

Definition at line 50 of file image_shader.cc.

50 {
51 if (sampling_is_locked_ || sampling == cached_shader_->sampling()) {
52 return cached_shader_;
53 }
54 return cached_shader_->with_sampling(sampling);
55}

◆ width()

int flutter::ImageShader::width ( )

Definition at line 57 of file image_shader.cc.

57 {
58 return image_->width();
59}

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