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

#include <dl_color_filter.h>

Inheritance diagram for flutter::DlBlendColorFilter:
flutter::DlColorFilter flutter::DlAttribute< DlColorFilter, DlColorFilterType >

Public Member Functions

 DlBlendColorFilter (DlColor color, DlBlendMode mode)
 
 DlBlendColorFilter (const DlBlendColorFilter &filter)
 
 DlBlendColorFilter (const DlBlendColorFilter *filter)
 
DlColorFilterType type () const override
 
size_t size () const override
 
bool modifies_transparent_black () const override
 
bool can_commute_with_opacity () const override
 
std::shared_ptr< DlColorFiltershared () const override
 
const DlBlendColorFilterasBlend () const override
 
DlColor color () const
 
DlBlendMode mode () const
 
- Public Member Functions inherited from flutter::DlColorFilter
virtual const DlMatrixColorFilterasMatrix () const
 
- Public Member Functions inherited from flutter::DlAttribute< DlColorFilter, DlColorFilterType >
bool operator== (DlColorFilter const &other) const
 
bool operator!= (DlColorFilter const &other) const
 
virtual ~DlAttribute ()=default
 

Static Public Member Functions

static std::shared_ptr< DlColorFilterMake (DlColor color, DlBlendMode mode)
 

Protected Member Functions

bool equals_ (DlColorFilter const &other) const override
 

Detailed Description

Definition at line 60 of file dl_color_filter.h.

Constructor & Destructor Documentation

◆ DlBlendColorFilter() [1/3]

flutter::DlBlendColorFilter::DlBlendColorFilter ( DlColor  color,
DlBlendMode  mode 
)
inline

Definition at line 62 of file dl_color_filter.h.

63 : color_(color), mode_(mode) {}

◆ DlBlendColorFilter() [2/3]

flutter::DlBlendColorFilter::DlBlendColorFilter ( const DlBlendColorFilter filter)
inline

Definition at line 64 of file dl_color_filter.h.

65 : DlBlendColorFilter(filter.color_, filter.mode_) {}
DlBlendColorFilter(DlColor color, DlBlendMode mode)

◆ DlBlendColorFilter() [3/3]

flutter::DlBlendColorFilter::DlBlendColorFilter ( const DlBlendColorFilter filter)
inlineexplicit

Definition at line 66 of file dl_color_filter.h.

67 : DlBlendColorFilter(filter->color_, filter->mode_) {}

Member Function Documentation

◆ asBlend()

const DlBlendColorFilter * flutter::DlBlendColorFilter::asBlend ( ) const
inlineoverridevirtual

Reimplemented from flutter::DlColorFilter.

Definition at line 81 of file dl_color_filter.h.

81{ return this; }

◆ can_commute_with_opacity()

bool flutter::DlBlendColorFilter::can_commute_with_opacity ( ) const
overridevirtual

Reimplemented from flutter::DlColorFilter.

Definition at line 90 of file dl_color_filter.cc.

90 {
91 switch (mode_) {
99 return true;
100
123 return color_.isTransparent();
124 }
125}
@ kSrcOut
r = s * (1-da)
@ kExclusion
rc = s + d - two(s*d), ra = kSrcOver
@ kSaturation
saturation of source with hue and luminosity of destination
@ kColorBurn
darken destination to reflect source
@ kPlus
r = min(s + d, 1)
@ kLighten
rc = s + d - min(s*da, d*sa), ra = kSrcOver
@ kHue
hue of source with saturation and luminosity of destination
@ kMultiply
r = s*(1-da) + d*(1-sa) + s*d
@ kColorDodge
brighten destination to reflect source
@ kScreen
r = s + d - s*d
@ kSrcOver
r = s + (1-sa)*d
@ kXor
r = s*(1-da) + d*(1-sa)
@ kLuminosity
luminosity of source with hue and saturation of destination
@ kSoftLight
lighten or darken, depending on source
@ kDifference
rc = s + d - 2*(min(s*da, d*sa)), ra = kSrcOver
@ kOverlay
multiply or screen, depending on destination
@ kSrcATop
r = s*da + d*(1-sa)
@ kDstATop
r = d*sa + s*(1-da)
@ kDstOver
r = d + (1-da)*s
@ kColor
hue and saturation of source with luminosity of destination
@ kHardLight
multiply or screen, depending on source
@ kDstOut
r = d * (1-sa)
@ kDarken
rc = s + d - max(s*da, d*sa), ra = kSrcOver
constexpr bool isTransparent() const
Definition dl_color.h:36

◆ color()

DlColor flutter::DlBlendColorFilter::color ( ) const
inline

Definition at line 83 of file dl_color_filter.h.

83{ return color_; }

◆ equals_()

bool flutter::DlBlendColorFilter::equals_ ( DlColorFilter const &  other) const
inlineoverrideprotectedvirtual

Implements flutter::DlAttribute< DlColorFilter, DlColorFilterType >.

Definition at line 87 of file dl_color_filter.h.

87 {
89 auto that = static_cast<DlBlendColorFilter const*>(&other);
90 return color_ == that->color_ && mode_ == that->mode_;
91 }
#define FML_DCHECK(condition)
Definition logging.h:103

◆ Make()

std::shared_ptr< DlColorFilter > flutter::DlBlendColorFilter::Make ( DlColor  color,
DlBlendMode  mode 
)
static

Definition at line 11 of file dl_color_filter.cc.

12 {
13 switch (mode) {
14 case DlBlendMode::kDst: {
15 return nullptr;
16 }
18 if (color.isTransparent()) {
19 return nullptr;
20 }
21 if (color.isOpaque()) {
23 }
24 break;
25 }
31 if (color.isTransparent()) {
32 return nullptr;
33 }
34 break;
35 }
37 if (color.isOpaque()) {
38 return nullptr;
39 }
40 break;
41 }
42 default:
43 break;
44 }
45 return std::make_shared<DlBlendColorFilter>(color, mode);
46}
constexpr bool isOpaque() const
Definition dl_color.h:35

◆ mode()

DlBlendMode flutter::DlBlendColorFilter::mode ( ) const
inline

Definition at line 84 of file dl_color_filter.h.

84{ return mode_; }

◆ modifies_transparent_black()

bool flutter::DlBlendColorFilter::modifies_transparent_black ( ) const
overridevirtual

Implements flutter::DlColorFilter.

Definition at line 48 of file dl_color_filter.cc.

48 {
49 switch (mode_) {
50 // These modes all act like kSrc when the dest is all 0s.
51 // So they modify transparent black when the src color is
52 // not transparent.
75 return !color_.isTransparent();
76
77 // These modes are all like kDst when the dest is all 0s.
78 // So they never modify transparent black.
86 return false;
87 }
88}

◆ shared()

std::shared_ptr< DlColorFilter > flutter::DlBlendColorFilter::shared ( ) const
inlineoverridevirtual

Implements flutter::DlAttribute< DlColorFilter, DlColorFilterType >.

Definition at line 77 of file dl_color_filter.h.

77 {
78 return std::make_shared<DlBlendColorFilter>(this);
79 }

◆ size()

size_t flutter::DlBlendColorFilter::size ( ) const
inlineoverridevirtual

Implements flutter::DlAttribute< DlColorFilter, DlColorFilterType >.

Definition at line 72 of file dl_color_filter.h.

72{ return sizeof(*this); }

◆ type()

DlColorFilterType flutter::DlBlendColorFilter::type ( ) const
inlineoverridevirtual

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