diff options
author | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:09:42 +0000 |
---|---|---|
committer | initial.commit <initial.commit@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-07-27 00:09:42 +0000 |
commit | ae2c20f398933a9e86c387dcc465ec0f71065ffc (patch) | |
tree | de668b1411e2ee0b4e49b6d8f8b68183134ac990 /skia/effects/SkPixelXorXfermode.cpp | |
parent | 09911bf300f1a419907a9412154760efd0b7abc3 (diff) | |
download | chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.zip chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.tar.gz chromium_src-ae2c20f398933a9e86c387dcc465ec0f71065ffc.tar.bz2 |
Add skia to the repository.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/effects/SkPixelXorXfermode.cpp')
-rw-r--r-- | skia/effects/SkPixelXorXfermode.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/skia/effects/SkPixelXorXfermode.cpp b/skia/effects/SkPixelXorXfermode.cpp new file mode 100644 index 0000000..a5599e2 --- /dev/null +++ b/skia/effects/SkPixelXorXfermode.cpp @@ -0,0 +1,36 @@ +#include "SkPixelXorXfermode.h" +#include "SkColorPriv.h" + +// we always return an opaque color, 'cause I don't know what to do with +// the alpha-component and still return a valid premultiplied color. +SkPMColor SkPixelXorXfermode::xferColor(SkPMColor src, SkPMColor dst) +{ + SkPMColor res = src ^ dst ^ fOpColor; + res |= (SK_A32_MASK << SK_A32_SHIFT); // force it to be opaque + return res; +} + +void SkPixelXorXfermode::flatten(SkFlattenableWriteBuffer& wb) +{ + this->INHERITED::flatten(wb); + wb.write32(fOpColor); +} + +SkPixelXorXfermode::SkPixelXorXfermode(SkFlattenableReadBuffer& rb) + : SkXfermode(rb) +{ + fOpColor = rb.readU32(); +} + +SkFlattenable::Factory SkPixelXorXfermode::getFactory() +{ + return Create; +} + +SkFlattenable* SkPixelXorXfermode::Create(SkFlattenableReadBuffer& rb) +{ + return SkNEW_ARGS(SkPixelXorXfermode, (rb)); +} + + + |