0f10f7bf1f
This change is motivated by the desire to see the text information in the debugger when not in developer mode. It is structured so user's can disable it if the capability is not wanted. R=bsalomon@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/197763008 git-svn-id: http://skia.googlecode.com/svn/trunk@13795 2bbb7eff-a529-9590-31e7-b0007b416f81
73 lines
2.4 KiB
C++
73 lines
2.4 KiB
C++
/*
|
|
* 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 SkAvoidXfermode_DEFINED
|
|
#define SkAvoidXfermode_DEFINED
|
|
|
|
#include "SkXfermode.h"
|
|
|
|
/** \class SkAvoidXfermode
|
|
|
|
This xfermode will draw the src everywhere except on top of the specified
|
|
color.
|
|
*/
|
|
class SK_API SkAvoidXfermode : 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 SkAvoidXfermode* Create(SkColor opColor, U8CPU tolerance, Mode mode) {
|
|
return SkNEW_ARGS(SkAvoidXfermode, (opColor, tolerance, mode));
|
|
}
|
|
|
|
// overrides from SkXfermode
|
|
virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
|
|
const SkAlpha aa[]) const SK_OVERRIDE;
|
|
virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count,
|
|
const SkAlpha aa[]) const SK_OVERRIDE;
|
|
virtual void xferA8(SkAlpha dst[], const SkPMColor src[], int count,
|
|
const SkAlpha aa[]) const SK_OVERRIDE;
|
|
|
|
SK_TO_STRING_OVERRIDE()
|
|
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkAvoidXfermode)
|
|
|
|
protected:
|
|
SkAvoidXfermode(SkReadBuffer&);
|
|
virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
|
|
|
|
#ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS
|
|
public:
|
|
#endif
|
|
SkAvoidXfermode(SkColor opColor, U8CPU tolerance, Mode mode);
|
|
|
|
private:
|
|
SkColor fOpColor;
|
|
uint32_t fDistMul; // x.14
|
|
Mode fMode;
|
|
|
|
typedef SkXfermode INHERITED;
|
|
};
|
|
|
|
#endif
|