diff options
author | Leon Scroggins III <scroggo@google.com> | 2015-01-30 09:05:11 -0500 |
---|---|---|
committer | Leon Scroggins III <scroggo@google.com> | 2015-01-30 09:05:11 -0500 |
commit | ed1ce37759fe1312d590e7ed46f1eb65a8a38ac2 (patch) | |
tree | 460f8af73a155de491815dc0ac4f5b77ba8ae60f /core/jni/android/graphics/AvoidXfermode.h | |
parent | 626647c3f6975269e6c2e0ebd4f412a977f49735 (diff) | |
download | frameworks_base-ed1ce37759fe1312d590e7ed46f1eb65a8a38ac2.zip frameworks_base-ed1ce37759fe1312d590e7ed46f1eb65a8a38ac2.tar.gz frameworks_base-ed1ce37759fe1312d590e7ed46f1eb65a8a38ac2.tar.bz2 |
AvoidXferMode -> AvoidXfermode.
When I moved this code here from external/skia, I accidentally changed
the lowercase 'm' to uppercase 'M'. Change back, to keep consistent
with SkXfermode and Xfermode.cpp.
Change-Id: I9694d29a22aaed7fcc8708f5962e3d2032297d08
Diffstat (limited to 'core/jni/android/graphics/AvoidXfermode.h')
-rw-r--r-- | core/jni/android/graphics/AvoidXfermode.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/core/jni/android/graphics/AvoidXfermode.h b/core/jni/android/graphics/AvoidXfermode.h new file mode 100644 index 0000000..318d7be --- /dev/null +++ b/core/jni/android/graphics/AvoidXfermode.h @@ -0,0 +1,70 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef AvoidXfermode_DEFINED +#define AvoidXfermode_DEFINED + +#include "SkColor.h" +#include "SkTypes.h" +#include "SkXfermode.h" + +/** \class AvoidXfermode + + This xfermode will draw the src everywhere except on top of the specified + color. +*/ +class AvoidXfermode : public SkXfermode { +public: + enum Mode { + kAvoidColor_Mode, //!< draw everywhere except on the opColor + kTargetColor_Mode //!< draw only on top of the opColor + }; + + /** This xfermode draws, or doesn't draw, based on the destination's + distance from an op-color. + + There are two modes, and each mode interprets a tolerance value. + + Avoid: In this mode, drawing is allowed only on destination pixels that + are different from the op-color. + Tolerance near 0: avoid any colors even remotely similar to the op-color + Tolerance near 255: avoid only colors nearly identical to the op-color + + Target: In this mode, drawing only occurs on destination pixels that + are similar to the op-color + Tolerance near 0: draw only on colors that are nearly identical to the op-color + Tolerance near 255: draw on any colors even remotely similar to the op-color + */ + static AvoidXfermode* Create(SkColor opColor, U8CPU tolerance, Mode mode) { + return SkNEW_ARGS(AvoidXfermode, (opColor, tolerance, mode)); + } + + // overrides from SkXfermode + void xfer32(SkPMColor dst[], const SkPMColor src[], int count, + const SkAlpha aa[]) const override; + void xfer16(uint16_t dst[], const SkPMColor src[], int count, + const SkAlpha aa[]) const override; + void xferA8(SkAlpha dst[], const SkPMColor src[], int count, + const SkAlpha aa[]) const override; + + SK_TO_STRING_OVERRIDE() + SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(AvoidXfermode) + +protected: + AvoidXfermode(SkColor opColor, U8CPU tolerance, Mode mode); + void flatten(SkWriteBuffer&) const override; + +private: + SkColor fOpColor; + uint32_t fDistMul; // x.14 cached from fTolerance + uint8_t fTolerance; + Mode fMode; + + typedef SkXfermode INHERITED; +}; + +#endif |