aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-17 02:16:43 +0000
committerGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-17 02:16:43 +0000
commite303fcf68d6fee2bf9ee0c4f6fb330a2c3e41a01 (patch)
treebb3c9b470ecdcf36cbd3ddf9532718097c42ede1 /src
parentb03db4a366d7bdcea095983f4beaf9982e96fc21 (diff)
add SkXfermode::IsMode() and use that in SkDevice
git-svn-id: http://skia.googlecode.com/svn/trunk@2703 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r--src/core/SkDevice.cpp12
-rw-r--r--src/core/SkXfermode.cpp9
2 files changed, 11 insertions, 10 deletions
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp
index e309097acf..860e45b0ed 100644
--- a/src/core/SkDevice.cpp
+++ b/src/core/SkDevice.cpp
@@ -358,14 +358,6 @@ void SkDevice::drawDevice(const SkDraw& draw, SkDevice* device,
///////////////////////////////////////////////////////////////////////////////
-static bool isSrcOver(SkXfermode* xfer) {
- if (NULL == xfer) {
- return true;
- }
- SkXfermode::Mode mode;
- return xfer->asMode(&mode) && (SkXfermode::kSrcOver_Mode == mode);
-}
-
bool SkDevice::filterTextFlags(const SkPaint& paint, TextFlags* flags) {
if (!paint.isLCDRenderText() || !paint.isAntiAlias()) {
// we're cool with the paint as is
@@ -378,11 +370,11 @@ bool SkDevice::filterTextFlags(const SkPaint& paint, TextFlags* flags) {
paint.getMaskFilter() ||
paint.getColorFilter() ||
#endif
- !isSrcOver(paint.getXfermode()) ||
paint.getRasterizer() ||
paint.getPathEffect() ||
paint.isFakeBoldText() ||
- paint.getStyle() != SkPaint::kFill_Style) {
+ paint.getStyle() != SkPaint::kFill_Style ||
+ !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)) {
// turn off lcd
flags->fFlags = paint.getFlags() & ~SkPaint::kLCDRenderText_Flag;
flags->fHinting = paint.getHinting();
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index e4d34e1ada..3ddacad60a 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -1033,6 +1033,15 @@ bool SkXfermode::AsCoeff(SkXfermode* xfer, Coeff* src, Coeff* dst) {
return xfer->asCoeff(src, dst);
}
+bool SkXfermode::IsMode(SkXfermode* xfer, Mode mode) {
+ // if xfer==null then the mode is srcover
+ Mode m = kSrcOver_Mode;
+ if (xfer && !xfer->asMode(&m)) {
+ return false;
+ }
+ return mode == m;
+}
+
///////////////////////////////////////////////////////////////////////////////
//////////// 16bit xfermode procs