SkPixelXorXfermode.h revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
1 2/* 3 * Copyright 2007 The Android Open Source Project 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#ifndef SkPixelXorXfermode_DEFINED 11#define SkPixelXorXfermode_DEFINED 12 13#include "SkXfermode.h" 14 15/** SkPixelXorXfermode implements a simple pixel xor (op ^ src ^ dst). 16 This transformation does not follow premultiplied conventions, therefore 17 this proc *always* returns an opaque color (alpha == 255). Thus it is 18 not really usefull for operating on blended colors. 19*/ 20class SkPixelXorXfermode : public SkXfermode { 21public: 22 SkPixelXorXfermode(SkColor opColor) : fOpColor(opColor) {} 23 24 // override from SkFlattenable 25 virtual Factory getFactory(); 26 virtual void flatten(SkFlattenableWriteBuffer&); 27 28 static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) { 29 return SkNEW_ARGS(SkPixelXorXfermode, (buffer)); 30 } 31 32protected: 33 // override from SkXfermode 34 virtual SkPMColor xferColor(SkPMColor src, SkPMColor dst); 35 36private: 37 SkColor fOpColor; 38 39 SkPixelXorXfermode(SkFlattenableReadBuffer& rb); 40 // our private factory 41 static SkFlattenable* Create(SkFlattenableReadBuffer&); 42 43 typedef SkXfermode INHERITED; 44}; 45 46#endif 47