Flutter Engine
The Flutter Engine
Public Member Functions | Static Public Member Functions | Friends | List of all members
SkColorFilter Class Reference

#include <SkColorFilter.h>

Inheritance diagram for SkColorFilter:
SkFlattenable SkRefCnt SkRefCntBase SkColorFilterBase SkColorMatrixFilter FailureColorFilter SkBlendModeColorFilter SkColorSpaceXformColorFilter SkComposeColorFilter SkGaussianColorFilter SkMatrixColorFilter SkRuntimeColorFilter SkTableColorFilter SkWorkingFormatColorFilter

Public Member Functions

bool asAColorMode (SkColor *color, SkBlendMode *mode) const
 
bool asAColorMatrix (float matrix[20]) const
 
bool isAlphaUnchanged () const
 
SkColor filterColor (SkColor) const
 
SkColor4f filterColor4f (const SkColor4f &srcColor, SkColorSpace *srcCS, SkColorSpace *dstCS) const
 
sk_sp< SkColorFiltermakeComposed (sk_sp< SkColorFilter > inner) const
 
sk_sp< SkColorFiltermakeWithWorkingColorSpace (sk_sp< SkColorSpace >) const
 
- Public Member Functions inherited from SkFlattenable
 SkFlattenable ()
 
virtual Factory getFactory () const =0
 
virtual const char * getTypeName () const =0
 
virtual void flatten (SkWriteBuffer &) const
 
virtual Type getFlattenableType () const =0
 
sk_sp< SkDataserialize (const SkSerialProcs *=nullptr) const
 
size_t serialize (void *memory, size_t memory_size, const SkSerialProcs *=nullptr) const
 
- Public Member Functions inherited from SkRefCntBase
 SkRefCntBase ()
 
virtual ~SkRefCntBase ()
 
bool unique () const
 
void ref () const
 
void unref () const
 

Static Public Member Functions

static sk_sp< SkColorFilterDeserialize (const void *data, size_t size, const SkDeserialProcs *procs=nullptr)
 
- Static Public Member Functions inherited from SkFlattenable
static Factory NameToFactory (const char name[])
 
static const char * FactoryToName (Factory)
 
static void Register (const char name[], Factory)
 
static sk_sp< SkFlattenableDeserialize (Type, const void *data, size_t length, const SkDeserialProcs *procs=nullptr)
 

Friends

class SkColorFilterBase
 

Additional Inherited Members

- Public Types inherited from SkFlattenable
enum  Type {
  kSkColorFilter_Type , kSkBlender_Type , kSkDrawable_Type , kSkDrawLooper_Type ,
  kSkImageFilter_Type , kSkMaskFilter_Type , kSkPathEffect_Type , kSkShader_Type
}
 
typedef sk_sp< SkFlattenable >(* Factory) (SkReadBuffer &)
 

Detailed Description

ColorFilters are optional objects in the drawing pipeline. When present in a paint, they are called with the "src" colors, and return new colors, which are then passed onto the next stage (either ImageFilter or Xfermode).

All subclasses are required to be reentrant-safe : it must be legal to share the same instance between several threads.

Definition at line 35 of file SkColorFilter.h.

Member Function Documentation

◆ asAColorMatrix()

bool SkColorFilter::asAColorMatrix ( float  matrix[20]) const

If the filter can be represented by a 5x4 matrix, this returns true, and sets the matrix appropriately. If not, this returns false and ignores the parameter.

Definition at line 30 of file SkColorFilter.cpp.

30 {
31 return as_CFB(this)->onAsAColorMatrix(matrix);
32}
static SkColorFilterBase * as_CFB(SkColorFilter *filter)
virtual bool onAsAColorMatrix(float[20]) const
unsigned useCenter Optional< SkMatrix > matrix
Definition: SkRecords.h:258

◆ asAColorMode()

bool SkColorFilter::asAColorMode ( SkColor color,
SkBlendMode mode 
) const

If the filter can be represented by a source color plus Mode, this returns true, and sets (if not NULL) the color and mode appropriately. If not, this returns false and ignores the parameters.

Definition at line 26 of file SkColorFilter.cpp.

26 {
27 return as_CFB(this)->onAsAColorMode(color, mode);
28}
virtual bool onAsAColorMode(SkColor *color, SkBlendMode *bmode) const
DlColor color
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive mode
Definition: switches.h:228

◆ Deserialize()

sk_sp< SkColorFilter > SkColorFilter::Deserialize ( const void *  data,
size_t  size,
const SkDeserialProcs procs = nullptr 
)
static

Definition at line 38 of file SkColorFilter.cpp.

39 {
40 return sk_sp<SkColorFilter>(static_cast<SkColorFilter*>(
42 kSkColorFilter_Type, data, size, procs).release()));
43}
static sk_sp< SkFlattenable > Deserialize(Type, const void *data, size_t length, const SkDeserialProcs *procs=nullptr)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63

◆ filterColor()

SkColor SkColorFilter::filterColor ( SkColor  c) const

Applies this filter to the input color. This function does no color management.

DEPRECATED: Please use filterColor4f instead. That function supports higher precision, wide-gamut color, and is explicit about the color space of the input and output.

Definition at line 45 of file SkColorFilter.cpp.

45 {
46 // This is mostly meaningless. We should phase-out this call entirely.
47 SkColorSpace* cs = nullptr;
48 return this->filterColor4f(SkColor4f::FromColor(c), cs, cs).toSkColor();
49}
SkColor4f filterColor4f(const SkColor4f &srcColor, SkColorSpace *srcCS, SkColorSpace *dstCS) const

◆ filterColor4f()

SkColor4f SkColorFilter::filterColor4f ( const SkColor4f srcColor,
SkColorSpace srcCS,
SkColorSpace dstCS 
) const

Converts the src color (in src colorspace), into the dst colorspace, then applies this filter to it, returning the filtered color in the dst colorspace.

Definition at line 51 of file SkColorFilter.cpp.

52 {
53 SkPMColor4f color = { origSrcColor.fR, origSrcColor.fG, origSrcColor.fB, origSrcColor.fA };
55 dstCS, kPremul_SkAlphaType).apply(color.vec());
56
57 SkPMColor4f filteredColor = as_CFB(this)->onFilterColor4f(color, dstCS);
58 // SkColor4f will assert if we allow alpha outside [0,1]. (SkSL color filters might do this).
59 filteredColor.fA = SkTPin(filteredColor.fA, 0.0f, 1.0f);
60 return filteredColor.unpremul();
61}
kUnpremul_SkAlphaType
@ kPremul_SkAlphaType
pixel components are premultiplied by alpha
Definition: SkAlphaType.h:29
static constexpr const T & SkTPin(const T &x, const T &lo, const T &hi)
Definition: SkTPin.h:19
virtual SkPMColor4f onFilterColor4f(const SkPMColor4f &color, SkColorSpace *dstCS) const
void apply(float rgba[4]) const
SkRGBA4f< kUnpremul_SkAlphaType > unpremul() const
Definition: SkColor.h:395
float fA
alpha component
Definition: SkColor.h:266

◆ isAlphaUnchanged()

bool SkColorFilter::isAlphaUnchanged ( ) const

Definition at line 34 of file SkColorFilter.cpp.

34 {
35 return as_CFB(this)->onIsAlphaUnchanged();
36}
virtual bool onIsAlphaUnchanged() const

◆ makeComposed()

sk_sp< SkColorFilter > SkColorFilter::makeComposed ( sk_sp< SkColorFilter inner) const

Construct a colorfilter whose effect is to first apply the inner filter and then apply this filter, applied to the output of the inner filter.

result = this(inner(...))

Definition at line 48 of file SkComposeColorFilter.cpp.

48 {
49 if (!inner) {
50 return sk_ref_sp(this);
51 }
52
53 return sk_sp<SkColorFilter>(new SkComposeColorFilter(sk_ref_sp(this), std::move(inner)));
54}
sk_sp< T > sk_ref_sp(T *obj)
Definition: SkRefCnt.h:381

◆ makeWithWorkingColorSpace()

sk_sp< SkColorFilter > SkColorFilter::makeWithWorkingColorSpace ( sk_sp< SkColorSpace workingSpace) const

Return a colorfilter that will compute this filter in a specific color space. By default all filters operate in the destination (surface) color space. This allows filters like Blend and Matrix, or runtime color filters to perform their math in a known space.

Definition at line 63 of file SkColorFilter.cpp.

64 {
65 SkColorFilter* base = const_cast<SkColorFilter*>(this);
66 if (!workingSpace) {
67 return sk_ref_sp(base);
68 }
69
71 skcms_Matrix3x3 toXYZ;
72 workingSpace->transferFn(&tf);
73 workingSpace->toXYZD50(&toXYZ);
74 const SkAlphaType* kOriginalAlphaType = nullptr;
75 return SkColorFilterPriv::WithWorkingFormat(sk_ref_sp(base), &tf, &toXYZ, kOriginalAlphaType);
76}
SkAlphaType
Definition: SkAlphaType.h:26
static sk_sp< SkColorFilter > WithWorkingFormat(sk_sp< SkColorFilter > child, const skcms_TransferFunction *tf, const skcms_Matrix3x3 *gamut, const SkAlphaType *at)
bool toXYZD50(skcms_Matrix3x3 *toXYZD50) const
void transferFn(float gabcdef[7]) const

Friends And Related Function Documentation

◆ SkColorFilterBase

friend class SkColorFilterBase
friend

Definition at line 85 of file SkColorFilter.h.


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