28template <SkAlphaType kDstAT = kPremul_SkAlphaType>
40 *
color = fColor.toSkColor();
60 buffer.writeColor4f(fColor);
61 buffer.writeUInt((
int)fMode);
101 float alpha = srgb.fA;
108 }
else if (1.f == alpha) {
static SkRGBA4f< kDstAT > map_color(const SkColor4f &c, SkColorSpace *src, SkColorSpace *dst)
void SkRegisterModeColorFilterFlattenable()
void SkBlendMode_AppendStages(SkBlendMode mode, SkRasterPipeline *p)
@ kSrcOver
r = s + (1-sa)*d
@ kXor
r = s*(1-da) + d*(1-sa)
@ kSrcATop
r = s*da + d*(1-sa)
@ kDstOver
r = d + (1-da)*s
@ kDarken
rc = s + d - max(s*da, d*sa), ra = kSrcOver
SkColorSpace * sk_srgb_singleton()
#define SK_REGISTER_FLATTENABLE(type)
static bool SkIsValidMode(SkBlendMode mode)
bool appendStages(const SkStageRec &rec, bool shaderIsOpaque) const override
bool onAsAColorMode(SkColor *, SkBlendMode *) const override
SkBlendModeColorFilter(const SkColor4f &color, SkBlendMode mode)
bool onIsAlphaUnchanged() const override
void flatten(SkWriteBuffer &) const override
static sk_sp< SkColorFilter > Blend(const SkColor4f &c, sk_sp< SkColorSpace >, SkBlendMode mode)
static void Register(const char name[], Factory)
void append(SkRasterPipelineOp, void *=nullptr)
void appendConstantColor(SkArenaAlloc *, const float rgba[4])
static const uint8_t buffer[]
constexpr SkColor4f kTransparent
static SkRGBA4f FromColor(SkColor color)
SkRasterPipeline * fPipeline