• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2007 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkPixelXorXfermode_DEFINED
11 #define SkPixelXorXfermode_DEFINED
12 
13 #include "SkXfermode.h"
14 
15 /** SkPixelXorXfermode implements a simple pixel xor (op ^ src ^ dst).
16     This transformation does not follow premultiplied conventions, therefore
17     this proc *always* returns an opaque color (alpha == 255). Thus it is
18     not really usefull for operating on blended colors.
19 */
20 class SkPixelXorXfermode : public SkXfermode {
21 public:
SkPixelXorXfermode(SkColor opColor)22     SkPixelXorXfermode(SkColor opColor) : fOpColor(opColor) {}
23 
24     // override from SkFlattenable
25     virtual Factory getFactory();
26     virtual void flatten(SkFlattenableWriteBuffer&);
27 
CreateProc(SkFlattenableReadBuffer & buffer)28     static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) {
29         return SkNEW_ARGS(SkPixelXorXfermode, (buffer));
30     }
31 
32     SK_DECLARE_FLATTENABLE_REGISTRAR()
33 
34 protected:
35     // override from SkXfermode
36     virtual SkPMColor xferColor(SkPMColor src, SkPMColor dst);
37 
38 private:
39     SkColor fOpColor;
40 
41     SkPixelXorXfermode(SkFlattenableReadBuffer& rb);
42     // our private factory
43     static SkFlattenable* Create(SkFlattenableReadBuffer&);
44 
45     typedef SkXfermode INHERITED;
46 };
47 
48 #endif
49