gfx/skia/trunk/src/core/SkXfermode_proccoeff.h

branch
TOR_BUG_3246
changeset 6
8bccb770b82d
equal deleted inserted replaced
-1:000000000000 0:8e01c078dcc6
1 #ifndef SkXfermode_proccoeff_DEFINED
2 #define SkXfermode_proccoeff_DEFINED
3
4 #include "SkXfermode.h"
5 #include "SkReadBuffer.h"
6 #include "SkWriteBuffer.h"
7
8 struct ProcCoeff {
9 SkXfermodeProc fProc;
10 SkXfermode::Coeff fSC;
11 SkXfermode::Coeff fDC;
12 };
13
14 #define CANNOT_USE_COEFF SkXfermode::Coeff(-1)
15
16 class SkProcCoeffXfermode : public SkProcXfermode {
17 public:
18 static SkProcCoeffXfermode* Create(const ProcCoeff& rec, Mode mode) {
19 return SkNEW_ARGS(SkProcCoeffXfermode, (rec, mode));
20 }
21
22 virtual bool asMode(Mode* mode) const SK_OVERRIDE;
23
24 virtual bool asCoeff(Coeff* sc, Coeff* dc) const SK_OVERRIDE;
25
26 #if SK_SUPPORT_GPU
27 virtual bool asNewEffect(GrEffectRef** effect,
28 GrTexture* background) const SK_OVERRIDE;
29 #endif
30
31 SK_TO_STRING_OVERRIDE()
32 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkProcCoeffXfermode)
33
34 protected:
35 SkProcCoeffXfermode(const ProcCoeff& rec, Mode mode)
36 : INHERITED(rec.fProc) {
37 fMode = mode;
38 // these may be valid, or may be CANNOT_USE_COEFF
39 fSrcCoeff = rec.fSC;
40 fDstCoeff = rec.fDC;
41 }
42
43 SkProcCoeffXfermode(SkReadBuffer& buffer);
44
45 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE;
46
47 Mode getMode() const {
48 return fMode;
49 }
50
51 private:
52 Mode fMode;
53 Coeff fSrcCoeff, fDstCoeff;
54
55 typedef SkProcXfermode INHERITED;
56 };
57
58 #endif // #ifndef SkXfermode_proccoeff_DEFINED

mercurial