blob: a5599e2217f2fae139ff13d1117eecdbad92e2e2 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001#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.
6SkPMColor 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
13void SkPixelXorXfermode::flatten(SkFlattenableWriteBuffer& wb)
14{
15 this->INHERITED::flatten(wb);
16 wb.write32(fOpColor);
17}
18
19SkPixelXorXfermode::SkPixelXorXfermode(SkFlattenableReadBuffer& rb)
20 : SkXfermode(rb)
21{
22 fOpColor = rb.readU32();
23}
24
25SkFlattenable::Factory SkPixelXorXfermode::getFactory()
26{
27 return Create;
28}
29
30SkFlattenable* SkPixelXorXfermode::Create(SkFlattenableReadBuffer& rb)
31{
32 return SkNEW_ARGS(SkPixelXorXfermode, (rb));
33}
34
35
36