1 #ifndef SkXfermode_proccoeff_DEFINED
2 #define SkXfermode_proccoeff_DEFINED
4 #include "SkXfermode.h"
5 #include "SkReadBuffer.h"
6 #include "SkWriteBuffer.h"
10 SkXfermode::Coeff fSC;
11 SkXfermode::Coeff fDC;
14 #define CANNOT_USE_COEFF SkXfermode::Coeff(-1)
16 class SK_API SkProcCoeffXfermode : public SkXfermode {
18 static SkProcCoeffXfermode* Create(const ProcCoeff& rec, Mode mode) {
19 return SkNEW_ARGS(SkProcCoeffXfermode, (rec, mode));
22 virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
23 const SkAlpha aa[]) const SK_OVERRIDE;
24 virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count,
25 const SkAlpha aa[]) const SK_OVERRIDE;
26 virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
27 const SkAlpha aa[]) const SK_OVERRIDE;
29 virtual bool asMode(Mode* mode) const SK_OVERRIDE;
31 virtual bool asCoeff(Coeff* sc, Coeff* dc) const SK_OVERRIDE;
34 virtual bool asNewEffect(GrEffectRef** effect,
35 GrTexture* background) const SK_OVERRIDE;
38 SK_TO_STRING_OVERRIDE()
39 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcCoeffXfermode)
42 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode) {
45 // these may be valid, or may be CANNOT_USE_COEFF
50 SkProcCoeffXfermode(SkReadBuffer& buffer);
52 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
54 Mode getMode() const { return fMode; }
56 SkXfermodeProc getProc() const { return fProc; }
61 Coeff fSrcCoeff, fDstCoeff;
63 typedef SkXfermode INHERITED;
66 #endif // #ifndef SkXfermode_proccoeff_DEFINED