Home | History | Annotate | Download | only in effects
      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 #include "SkFlattenableBuffers.h"
     13 #include "SkString.h"
     14 
     15 // we always return an opaque color, 'cause I don't know what to do with
     16 // the alpha-component and still return a valid premultiplied color.
     17 SkPMColor SkPixelXorXfermode::xferColor(SkPMColor src, SkPMColor dst) const {
     18     SkPMColor res = src ^ dst ^ fOpColor;
     19     res |= (SK_A32_MASK << SK_A32_SHIFT);   // force it to be opaque
     20     return res;
     21 }
     22 
     23 void SkPixelXorXfermode::flatten(SkFlattenableWriteBuffer& wb) const {
     24     this->INHERITED::flatten(wb);
     25     wb.writeColor(fOpColor);
     26 }
     27 
     28 SkPixelXorXfermode::SkPixelXorXfermode(SkFlattenableReadBuffer& rb)
     29         : INHERITED(rb) {
     30     fOpColor = rb.readColor();
     31 }
     32 
     33 #ifdef SK_DEVELOPER
     34 void SkPixelXorXfermode::toString(SkString* str) const {
     35     str->append("SkPixelXorXfermode: ");
     36     str->appendHex(fOpColor);
     37 }
     38 #endif
     39