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