SkPixelXorXfermode.h revision 54924243c1b65b3ee6d8fa064b50a9b1bb2a19a5
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    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPixelXorXfermode)
25
26protected:
27    SkPixelXorXfermode(SkFlattenableReadBuffer& rb);
28    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
29
30    // override from SkXfermode
31    virtual SkPMColor xferColor(SkPMColor src, SkPMColor dst);
32
33private:
34    SkColor fOpColor;
35
36    typedef SkXfermode INHERITED;
37};
38
39#endif
40