Flutter Engine
 
Loading...
Searching...
No Matches
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

References shader().

Member Function Documentation

◆ Create()

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

Definition at line 22 of file image_shader.cc.

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

◆ dispose()

void flutter::ImageShader::dispose ( )

Definition at line 68 of file image_shader.cc.

68 {
69 cached_shader_.reset();
70 image_.reset();
72}

References tonic::DartWrappable::ClearDartWrapper().

◆ height()

int flutter::ImageShader::height ( )

Definition at line 64 of file image_shader.cc.

64 {
65 return image_->height();
66}

◆ initWithImage()

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

Definition at line 27 of file image_shader.cc.

31 {
32 // CanvasImage should have already checked for a UI thread safe image.
33 if (!image || !image->image()->isUIThreadSafe()) {
34 return ToDart("ImageShader constructor called with non-genuine Image.");
35 }
36
37 image_ = image->image();
38 tonic::Float64List matrix4(matrix_handle);
39 DlMatrix local_matrix = ToDlMatrix(matrix4);
40 matrix4.Release();
41 sampling_is_locked_ = filter_quality_index >= 0;
42 DlImageSampling sampling =
43 sampling_is_locked_ ? ImageFilter::SamplingFromIndex(filter_quality_index)
45 cached_shader_ =
46 DlColorSource::MakeImage(image_, tmx, tmy, sampling, &local_matrix);
47 FML_DCHECK(cached_shader_->isUIThreadSafe());
48 return Dart_Null();
49}
static std::shared_ptr< DlColorSource > MakeImage(const sk_sp< const DlImage > &image, DlTileMode horizontal_tile_mode, DlTileMode vertical_tile_mode, DlImageSampling sampling=DlImageSampling::kLinear, const DlMatrix *matrix=nullptr)
static DlImageSampling SamplingFromIndex(int filterQualityIndex)
FlutterVulkanImage * image
#define FML_DCHECK(condition)
Definition logging.h:122
impeller::Matrix DlMatrix
DlMatrix ToDlMatrix(const SkMatrix &matrix)
Dart_Handle ToDart(const T &object)
FlutterVulkanImageHandle image
Definition embedder.h:931

References FML_DCHECK, FlutterVulkanImage::image, image, flutter::kLinear, flutter::DlColorSource::MakeImage(), flutter::ImageFilter::SamplingFromIndex(), and flutter::ToDlMatrix().

◆ shader()

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

Implements flutter::Shader.

Definition at line 51 of file image_shader.cc.

51 {
52 const DlImageColorSource* image_shader = cached_shader_->asImage();
53 FML_DCHECK(image_shader);
54 if (sampling_is_locked_ || sampling == image_shader->sampling()) {
55 return cached_shader_;
56 }
57 return image_shader->WithSampling(sampling);
58}

References FML_DCHECK, flutter::DlImageColorSource::sampling(), and flutter::DlImageColorSource::WithSampling().

Referenced by ~ImageShader().

◆ width()

int flutter::ImageShader::width ( )

Definition at line 60 of file image_shader.cc.

60 {
61 return image_->width();
62}

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