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)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 flatten(SkFlattenableWriteBuffer & wb)13void SkPixelXorXfermode::flatten(SkFlattenableWriteBuffer& wb) 14 { 15 this->INHERITED::flatten(wb); 16 wb.write32(fOpColor); 17 } 18 SkPixelXorXfermode(SkFlattenableReadBuffer & rb)19SkPixelXorXfermode::SkPixelXorXfermode(SkFlattenableReadBuffer& rb) 20 : SkXfermode(rb) 21 { 22 fOpColor = rb.readU32(); 23 } 24 getFactory()25SkFlattenable::Factory SkPixelXorXfermode::getFactory() 26 { 27 return Create; 28 } 29 Create(SkFlattenableReadBuffer & rb)30SkFlattenable* SkPixelXorXfermode::Create(SkFlattenableReadBuffer& rb) 31 { 32 return SkNEW_ARGS(SkPixelXorXfermode, (rb)); 33 } 34 35 36 37