• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "SkPixelXorXfermode.h"
2 #include "SkColorPriv.h"
3 
4 // we always return an opaque color, 'cause I don't know what to do with
5 // the alpha-component and still return a valid premultiplied color.
xferColor(SkPMColor src,SkPMColor dst)6 SkPMColor SkPixelXorXfermode::xferColor(SkPMColor src, SkPMColor dst)
7 {
8     SkPMColor res = src ^ dst ^ fOpColor;
9     res |= (SK_A32_MASK << SK_A32_SHIFT);   // force it to be opaque
10     return res;
11 }
12 
flatten(SkFlattenableWriteBuffer & wb)13 void SkPixelXorXfermode::flatten(SkFlattenableWriteBuffer& wb)
14 {
15     this->INHERITED::flatten(wb);
16     wb.write32(fOpColor);
17 }
18 
SkPixelXorXfermode(SkFlattenableReadBuffer & rb)19 SkPixelXorXfermode::SkPixelXorXfermode(SkFlattenableReadBuffer& rb)
20     : SkXfermode(rb)
21 {
22     fOpColor = rb.readU32();
23 }
24 
getFactory()25 SkFlattenable::Factory SkPixelXorXfermode::getFactory()
26 {
27     return Create;
28 }
29 
Create(SkFlattenableReadBuffer & rb)30 SkFlattenable* SkPixelXorXfermode::Create(SkFlattenableReadBuffer& rb)
31 {
32     return SkNEW_ARGS(SkPixelXorXfermode, (rb));
33 }
34 
35 
36 
37