Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | List of all members
skgpu::graphite::PrecompileComposeColorFilter Class Reference
Inheritance diagram for skgpu::graphite::PrecompileComposeColorFilter:
skgpu::graphite::PrecompileColorFilter skgpu::graphite::PrecompileBase SkRefCnt SkRefCntBase

Public Member Functions

 PrecompileComposeColorFilter (SkSpan< const sk_sp< PrecompileColorFilter > > outerOptions, SkSpan< const sk_sp< PrecompileColorFilter > > innerOptions)
 
- Public Member Functions inherited from skgpu::graphite::PrecompileColorFilter
 PrecompileColorFilter ()
 
sk_sp< PrecompileColorFiltermakeComposed (sk_sp< PrecompileColorFilter > inner) const
 
- Public Member Functions inherited from skgpu::graphite::PrecompileBase
 PrecompileBase (Type type)
 
Type type () const
 
virtual int numIntrinsicCombinations () const
 
int numCombinations () const
 
PrecompileBasePriv priv ()
 
const PrecompileBasePriv priv () const
 
- Public Member Functions inherited from SkRefCntBase
 SkRefCntBase ()
 
virtual ~SkRefCntBase ()
 
bool unique () const
 
void ref () const
 
void unref () const
 

Private Member Functions

int numChildCombinations () const override
 
void addToKey (const KeyContext &keyContext, PaintParamsKeyBuilder *builder, PipelineDataGatherer *gatherer, int desiredCombination) const override
 

Additional Inherited Members

- Public Types inherited from skgpu::graphite::PrecompileBase
enum class  Type {
  kBlender , kColorFilter , kImageFilter , kMaskFilter ,
  kShader
}
 
- Static Protected Member Functions inherited from skgpu::graphite::PrecompileBase
template<typename T >
static std::pair< sk_sp< T >, intSelectOption (SkSpan< const sk_sp< T > > options, int desiredOption)
 
template<typename T >
static void AddToKey (const KeyContext &, PaintParamsKeyBuilder *, PipelineDataGatherer *, SkSpan< const sk_sp< T > > options, int desiredOption)
 

Detailed Description

Definition at line 1067 of file FactoryFunctions.cpp.

Constructor & Destructor Documentation

◆ PrecompileComposeColorFilter()

skgpu::graphite::PrecompileComposeColorFilter::PrecompileComposeColorFilter ( SkSpan< const sk_sp< PrecompileColorFilter > >  outerOptions,
SkSpan< const sk_sp< PrecompileColorFilter > >  innerOptions 
)
inline

Definition at line 1069 of file FactoryFunctions.cpp.

1071 : fOuterOptions(outerOptions.begin(), outerOptions.end())
1072 , fInnerOptions(innerOptions.begin(), innerOptions.end()) {
1073
1074 fNumOuterCombos = 0;
1075 for (const auto& outerOption : fOuterOptions) {
1076 fNumOuterCombos += outerOption ? outerOption->numCombinations() : 1;
1077 }
1078
1079 fNumInnerCombos = 0;
1080 for (const auto& innerOption : fInnerOptions) {
1081 fNumInnerCombos += innerOption ? innerOption->numCombinations() : 1;
1082 }
1083 }
constexpr T * begin() const
Definition SkSpan_impl.h:90
constexpr T * end() const
Definition SkSpan_impl.h:91

Member Function Documentation

◆ addToKey()

void skgpu::graphite::PrecompileComposeColorFilter::addToKey ( const KeyContext keyContext,
PaintParamsKeyBuilder builder,
PipelineDataGatherer gatherer,
int  desiredCombination 
) const
inlineoverrideprivatevirtual

Implements skgpu::graphite::PrecompileBase.

Definition at line 1088 of file FactoryFunctions.cpp.

1091 {
1092 SkASSERT(desiredCombination < this->numCombinations());
1093
1094 const int desiredOuterCombination = desiredCombination % fNumOuterCombos;
1095 int remainingCombinations = desiredCombination / fNumOuterCombos;
1096
1097 const int desiredInnerCombination = remainingCombinations % fNumInnerCombos;
1098 remainingCombinations /= fNumInnerCombos;
1099
1100 SkASSERT(!remainingCombinations);
1101
1102 sk_sp<PrecompileColorFilter> inner, outer;
1103 int innerChildOptions, outerChildOptions;
1104
1105 std::tie(outer, outerChildOptions) = SelectOption<PrecompileColorFilter>(
1106 fOuterOptions, desiredOuterCombination);
1107 std::tie(inner, innerChildOptions) = SelectOption<PrecompileColorFilter>(
1108 fInnerOptions, desiredInnerCombination);
1109
1110 if (!inner && !outer) {
1111 // A "passthrough" color filter returns the input color as-is.
1113 } else if (!inner) {
1114 outer->priv().addToKey(keyContext, builder, gatherer, outerChildOptions);
1115 } else if (!outer) {
1116 inner->priv().addToKey(keyContext, builder, gatherer, innerChildOptions);
1117 } else {
1118 Compose(keyContext, builder, gatherer,
1119 /* addInnerToKey= */ [&]() -> void {
1120 inner->priv().addToKey(keyContext, builder, gatherer, innerChildOptions);
1121 },
1122 /* addOuterToKey= */ [&]() -> void {
1123 outer->priv().addToKey(keyContext, builder, gatherer, outerChildOptions);
1124 });
1125 }
1126 }
#define SkASSERT(cond)
Definition SkAssert.h:116
void addToKey(const KeyContext &keyContext, PaintParamsKeyBuilder *builder, PipelineDataGatherer *gatherer, int desiredCombination) const override
void Compose(const KeyContext &keyContext, PaintParamsKeyBuilder *keyBuilder, PipelineDataGatherer *gatherer, AddToKeyFn addInnerToKey, AddToKeyFn addOuterToKey)

◆ numChildCombinations()

int skgpu::graphite::PrecompileComposeColorFilter::numChildCombinations ( ) const
inlineoverrideprivatevirtual

Reimplemented from skgpu::graphite::PrecompileBase.

Definition at line 1086 of file FactoryFunctions.cpp.

1086{ return fNumOuterCombos * fNumInnerCombos; }

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