Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
sksg::GradientColorFilter Class Referencefinal

#include <SkSGColorFilter.h>

Inheritance diagram for sksg::GradientColorFilter:
sksg::ColorFilter sksg::EffectNode sksg::RenderNode sksg::Node SkRefCnt SkRefCntBase

Public Member Functions

 ~GradientColorFilter () override
 
- Public Member Functions inherited from sksg::RenderNode
void render (SkCanvas *, const RenderContext *=nullptr) const
 
const RenderNodenodeAt (const SkPoint &point) const
 
bool isVisible () const
 
void setVisible (bool)
 
- Public Member Functions inherited from sksg::Node
const SkRectrevalidate (InvalidationController *, const SkMatrix &)
 
void invalidate (bool damage=true)
 
- 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< GradientColorFilterMake (sk_sp< RenderNode > child, sk_sp< Color > c0, sk_sp< Color > c1)
 
static sk_sp< GradientColorFilterMake (sk_sp< RenderNode > child, std::vector< sk_sp< Color > >)
 

Protected Member Functions

sk_sp< SkColorFilteronRevalidateFilter () override
 
- Protected Member Functions inherited from sksg::ColorFilter
 ColorFilter (sk_sp< RenderNode >)
 
void onRender (SkCanvas *, const RenderContext *) const final
 
const RenderNodeonNodeAt (const SkPoint &) const final
 
SkRect onRevalidate (InvalidationController *, const SkMatrix &) final
 
- Protected Member Functions inherited from sksg::EffectNode
 EffectNode (sk_sp< RenderNode >, uint32_t inval_traits=0)
 
 ~EffectNode () override
 
void onRender (SkCanvas *, const RenderContext *) const override
 
const RenderNodeonNodeAt (const SkPoint &) const override
 
SkRect onRevalidate (InvalidationController *, const SkMatrix &) override
 
const sk_sp< RenderNode > & getChild () const
 
- Protected Member Functions inherited from sksg::RenderNode
 RenderNode (uint32_t inval_traits=0)
 
- Protected Member Functions inherited from sksg::Node
 Node (uint32_t invalTraits)
 
 ~Node () override
 
const SkRectbounds () const
 
bool hasInval () const
 
void observeInval (const sk_sp< Node > &)
 
void unobserveInval (const sk_sp< Node > &)
 

Additional Inherited Members

- Protected Types inherited from sksg::Node
enum  InvalTraits { kBubbleDamage_Trait = 1 << 0 , kOverrideDamage_Trait = 1 << 1 }
 

Detailed Description

Tint/multi-tone color effect: maps RGB colors to the [C0,C1][C1,C2]..[Cn-1,Cn] gradient based on input luminance (where the colors are evenly distributed across the luminance domain), then mixes with the input based on weight. Leaves alpha unchanged.

Definition at line 102 of file SkSGColorFilter.h.

Constructor & Destructor Documentation

◆ ~GradientColorFilter()

sksg::GradientColorFilter::~GradientColorFilter ( )
override

Definition at line 109 of file SkSGColorFilter.cpp.

109 {
110 for (const auto& color : fColors) {
111 this->unobserveInval(color);
112 }
113}
SkColor4f color
void unobserveInval(const sk_sp< Node > &)
Definition SkSGNode.cpp:84

Member Function Documentation

◆ Make() [1/2]

sk_sp< GradientColorFilter > sksg::GradientColorFilter::Make ( sk_sp< RenderNode child,
sk_sp< Color c0,
sk_sp< Color c1 
)
static

Definition at line 89 of file SkSGColorFilter.cpp.

90 {
91 return Make(std::move(child), { std::move(c0), std::move(c1) });
92}
static sk_sp< GradientColorFilter > Make(sk_sp< RenderNode > child, sk_sp< Color > c0, sk_sp< Color > c1)

◆ Make() [2/2]

sk_sp< GradientColorFilter > sksg::GradientColorFilter::Make ( sk_sp< RenderNode child,
std::vector< sk_sp< Color > >  colors 
)
static

Definition at line 94 of file SkSGColorFilter.cpp.

95 {
96 return (child && colors.size() > 1)
97 ? sk_sp<GradientColorFilter>(new GradientColorFilter(std::move(child), std::move(colors)))
98 : nullptr;
99}
PODArray< SkColor > colors
Definition SkRecords.h:276

◆ onRevalidateFilter()

sk_sp< SkColorFilter > sksg::GradientColorFilter::onRevalidateFilter ( )
overrideprotectedvirtual

Implements sksg::ColorFilter.

Definition at line 217 of file SkSGColorFilter.cpp.

217 {
218 for (const auto& color : fColors) {
219 color->revalidate(nullptr, SkMatrix::I());
220 }
221
222 if (fWeight <= 0) {
223 return nullptr;
224 }
225
226 SkASSERT(fColors.size() > 1);
227 auto gradientCF = (fColors.size() > 2) ? MakeNColorGradient(fColors)
228 : Make2ColorGradient(fColors[0], fColors[1]);
229
230 return SkColorFilters::Lerp(fWeight, nullptr, std::move(gradientCF));
231}
#define SkASSERT(cond)
Definition SkAssert.h:116
static sk_sp< SkColorFilter > Lerp(float t, sk_sp< SkColorFilter > dst, sk_sp< SkColorFilter > src)
static const SkMatrix & I()

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