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