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. 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 37