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 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode) {
21 // these may be valid, or may be CANNOT_USE_COEFF
26 virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
27 const SkAlpha aa[]) const SK_OVERRIDE;
28 virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count,
29 const SkAlpha aa[]) const SK_OVERRIDE;
30 virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
31 const SkAlpha aa[]) const SK_OVERRIDE;
33 virtual bool asMode(Mode* mode) const SK_OVERRIDE;
35 virtual bool asCoeff(Coeff* sc, Coeff* dc) const SK_OVERRIDE;
38 virtual bool asFragmentProcessor(GrFragmentProcessor**,
39 GrTexture* background) const SK_OVERRIDE;
42 SK_TO_STRING_OVERRIDE()
43 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcCoeffXfermode)
46 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
47 SkProcCoeffXfermode(SkReadBuffer& buffer);
50 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
52 Mode getMode() const { return fMode; }
54 SkXfermodeProc getProc() const { return fProc; }
59 Coeff fSrcCoeff, fDstCoeff;
61 friend class SkXfermode;
63 typedef SkXfermode INHERITED;
66 #endif // #ifndef SkXfermode_proccoeff_DEFINED