diff options
author | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-11-17 02:16:43 +0000 |
---|---|---|
committer | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-11-17 02:16:43 +0000 |
commit | e303fcf68d6fee2bf9ee0c4f6fb330a2c3e41a01 (patch) | |
tree | bb3c9b470ecdcf36cbd3ddf9532718097c42ede1 /src | |
parent | b03db4a366d7bdcea095983f4beaf9982e96fc21 (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.cpp | 12 | ||||
-rw-r--r-- | src/core/SkXfermode.cpp | 9 |
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 |