Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Macros | Functions
SkColorFilterBase.h File Reference
#include "include/core/SkColor.h"
#include "include/core/SkColorFilter.h"
#include "include/core/SkFlattenable.h"
#include "include/core/SkRefCnt.h"
#include "include/private/SkColorData.h"
#include <cstddef>

Go to the source code of this file.

Classes

class  SkColorFilterBase
 

Macros

#define SK_ALL_COLOR_FILTERS(M)
 
#define M(type)   k##type,
 

Functions

static SkColorFilterBaseas_CFB (SkColorFilter *filter)
 
static const SkColorFilterBaseas_CFB (const SkColorFilter *filter)
 
static const SkColorFilterBaseas_CFB (const sk_sp< SkColorFilter > &filter)
 
static sk_sp< SkColorFilterBaseas_CFB_sp (sk_sp< SkColorFilter > filter)
 
void SkRegisterComposeColorFilterFlattenable ()
 
void SkRegisterMatrixColorFilterFlattenable ()
 
void SkRegisterModeColorFilterFlattenable ()
 
void SkRegisterSkColorSpaceXformColorFilterFlattenable ()
 
void SkRegisterTableColorFilterFlattenable ()
 
void SkRegisterWorkingFormatColorFilterFlattenable ()
 

Macro Definition Documentation

◆ M

#define M (   type)    k##type,

Definition at line 46 of file SkColorFilterBase.h.

◆ SK_ALL_COLOR_FILTERS

#define SK_ALL_COLOR_FILTERS (   M)
Value:
M(BlendMode) \
M(ColorSpaceXform) \
M(Compose) \
M(Gaussian) \
M(Matrix) \
M(Runtime) \
M(Table) \
M(WorkingFormat)
#define M(type)

Definition at line 25 of file SkColorFilterBase.h.

34 : public SkColorFilter {
35public:
36 [[nodiscard]] virtual bool appendStages(const SkStageRec& rec, bool shaderIsOpaque) const = 0;
37
38 /** Returns the flags for this filter. Override in subclasses to return custom flags.
39 */
40 virtual bool onIsAlphaUnchanged() const { return false; }
41
42 enum class Type {
43 // Used for stubs/tests
44 kNoop,
45#define M(type) k##type,
47#undef M
48
49 };
50
51 virtual Type type() const = 0;
52
53 bool affectsTransparentBlack() const {
54 return this->filterColor4f(SkColors::kTransparent, nullptr, nullptr) !=
56 }
57
58 virtual SkRuntimeEffect* asRuntimeEffect() const { return nullptr; }
59
60 static SkFlattenable::Type GetFlattenableType() {
61 return kSkColorFilter_Type;
62 }
63
64 SkFlattenable::Type getFlattenableType() const override {
65 return kSkColorFilter_Type;
66 }
67
68 static sk_sp<SkColorFilter> Deserialize(const void* data, size_t size,
69 const SkDeserialProcs* procs = nullptr) {
70 return sk_sp<SkColorFilter>(static_cast<SkColorFilter*>(
72 kSkColorFilter_Type, data, size, procs).release()));
73 }
74
75 virtual SkPMColor4f onFilterColor4f(const SkPMColor4f& color, SkColorSpace* dstCS) const;
76
77protected:
79
80 virtual bool onAsAColorMatrix(float[20]) const;
81 virtual bool onAsAColorMode(SkColor* color, SkBlendMode* bmode) const;
82
83private:
84 friend class SkColorFilter;
85
87};
88
89static inline SkColorFilterBase* as_CFB(SkColorFilter* filter) {
90 return static_cast<SkColorFilterBase*>(filter);
91}
92
93static inline const SkColorFilterBase* as_CFB(const SkColorFilter* filter) {
94 return static_cast<const SkColorFilterBase*>(filter);
95}
96
97static inline const SkColorFilterBase* as_CFB(const sk_sp<SkColorFilter>& filter) {
98 return static_cast<SkColorFilterBase*>(filter.get());
99}
100
102 return sk_sp<SkColorFilterBase>(static_cast<SkColorFilterBase*>(filter.release()));
103}
104
111
112#endif
SkColor4f color
SkBlendMode
Definition SkBlendMode.h:38
void SkRegisterMatrixColorFilterFlattenable()
void SkRegisterComposeColorFilterFlattenable()
void SkRegisterWorkingFormatColorFilterFlattenable()
void SkRegisterTableColorFilterFlattenable()
static sk_sp< SkColorFilterBase > as_CFB_sp(sk_sp< SkColorFilter > filter)
void SkRegisterSkColorSpaceXformColorFilterFlattenable()
#define SK_ALL_COLOR_FILTERS(M)
static SkColorFilterBase * as_CFB(SkColorFilter *filter)
void SkRegisterModeColorFilterFlattenable()
uint32_t SkColor
Definition SkColor.h:37
#define INHERITED(method,...)
static sk_sp< SkFlattenable > Deserialize(Type, const void *data, size_t length, const SkDeserialProcs *procs=nullptr)
T * get() const
Definition SkRefCnt.h:303
T * release()
Definition SkRefCnt.h:324
constexpr SkColor4f kTransparent
Definition SkColor.h:434

Function Documentation

◆ as_CFB() [1/3]

static const SkColorFilterBase * as_CFB ( const sk_sp< SkColorFilter > &  filter)
inlinestatic

Definition at line 98 of file SkColorFilterBase.h.

98 {
99 return static_cast<SkColorFilterBase*>(filter.get());
100}

◆ as_CFB() [2/3]

static const SkColorFilterBase * as_CFB ( const SkColorFilter filter)
inlinestatic

Definition at line 94 of file SkColorFilterBase.h.

94 {
95 return static_cast<const SkColorFilterBase*>(filter);
96}

◆ as_CFB() [3/3]

static SkColorFilterBase * as_CFB ( SkColorFilter filter)
inlinestatic

Definition at line 90 of file SkColorFilterBase.h.

90 {
91 return static_cast<SkColorFilterBase*>(filter);
92}

◆ as_CFB_sp()

static sk_sp< SkColorFilterBase > as_CFB_sp ( sk_sp< SkColorFilter filter)
inlinestatic

Definition at line 102 of file SkColorFilterBase.h.

102 {
103 return sk_sp<SkColorFilterBase>(static_cast<SkColorFilterBase*>(filter.release()));
104}

◆ SkRegisterComposeColorFilterFlattenable()

void SkRegisterComposeColorFilterFlattenable ( )

◆ SkRegisterMatrixColorFilterFlattenable()

void SkRegisterMatrixColorFilterFlattenable ( )

Definition at line 115 of file SkMatrixColorFilter.cpp.

115 {
117 // Previous name
118 SkFlattenable::Register("SkColorFilter_Matrix", SkMatrixColorFilter::CreateProc);
119}
static void Register(const char name[], Factory)

◆ SkRegisterModeColorFilterFlattenable()

void SkRegisterModeColorFilterFlattenable ( )

Definition at line 133 of file SkBlendModeColorFilter.cpp.

133 {
135 // Previous name
136 SkFlattenable::Register("SkModeColorFilter", SkBlendModeColorFilter::CreateProc);
137}

◆ SkRegisterSkColorSpaceXformColorFilterFlattenable()

void SkRegisterSkColorSpaceXformColorFilterFlattenable ( )

Definition at line 99 of file SkColorSpaceXformColorFilter.cpp.

99 {
101 // Previous name
102 SkFlattenable::Register("ColorSpaceXformColorFilter", SkColorSpaceXformColorFilter::CreateProc);
103 // TODO(ccameron): Remove after grace period for SKPs to stop using old serialization.
104 SkFlattenable::Register("SkSRGBGammaColorFilter",
105 SkColorSpaceXformColorFilter::LegacyGammaOnlyCreateProc);
106}

◆ SkRegisterTableColorFilterFlattenable()

void SkRegisterTableColorFilterFlattenable ( )

Definition at line 73 of file SkTableColorFilter.cpp.

73 {
75 // Previous name
76 SkFlattenable::Register("SkTable_ColorFilter", SkTableColorFilter::CreateProc);
77}

◆ SkRegisterWorkingFormatColorFilterFlattenable()

void SkRegisterWorkingFormatColorFilterFlattenable ( )