aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkXfermodeInterpretation.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2016-10-03 21:34:16 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-03 21:34:36 +0000
commit2cbcd12281ee807214df094964c584c78932e10b (patch)
tree456f2c92158b18a8b010cc6e5bb594b73fbb998e /src/core/SkXfermodeInterpretation.cpp
parent418374c0d27280f3a1161601ae5fab28a76a0d3c (diff)
Revert "Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints"""
This reverts commit I86875511a13497112827cbaed1dbd7639e9e3d10. legacy (100K) skp failure Original change's description: > Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints"" > > This reverts commit ce02e7175872abde3721df9e5d3ec0ab8384cd8e. > > BUG=skia: > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2878 > > Change-Id: I86875511a13497112827cbaed1dbd7639e9e3d10 > Reviewed-on: https://skia-review.googlesource.com/2878 > Reviewed-by: Matt Sarett <msarett@google.com> > Commit-Queue: Mike Reed <reed@google.com> > TBR=msarett@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: Ife6f0cf3a22b3e8cf885a188f7f44e1ff62e06a5 Reviewed-on: https://skia-review.googlesource.com/2881 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/core/SkXfermodeInterpretation.cpp')
-rw-r--r--src/core/SkXfermodeInterpretation.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/core/SkXfermodeInterpretation.cpp b/src/core/SkXfermodeInterpretation.cpp
index 3a1da368d7..1b2c8e32e6 100644
--- a/src/core/SkXfermodeInterpretation.cpp
+++ b/src/core/SkXfermodeInterpretation.cpp
@@ -9,31 +9,38 @@
#include "SkPaint.h"
static bool just_solid_color(const SkPaint& p) {
- return SK_AlphaOPAQUE == p.getAlpha() && !p.getColorFilter() && !p.getShader();
+ return SK_AlphaOPAQUE == p.getAlpha()
+ && !p.getColorFilter() && !p.getShader();
}
-SkXfermodeInterpretation SkInterpretXfermode(const SkPaint& paint, bool dstIsOpaque) {
- switch (paint.getBlendMode()) {
- case SkBlendMode::kSrcOver:
+SkXfermodeInterpretation SkInterpretXfermode(const SkPaint& paint,
+ bool dstIsOpaque) {
+ const SkXfermode* xfer = paint.getXfermode();
+ SkXfermode::Mode mode;
+ if (!SkXfermode::AsMode(xfer, &mode)) {
+ return kNormal_SkXfermodeInterpretation;
+ }
+ switch (mode) {
+ case SkXfermode::kSrcOver_Mode:
return kSrcOver_SkXfermodeInterpretation;
- case SkBlendMode::kSrc:
+ case SkXfermode::kSrc_Mode:
if (just_solid_color(paint)) {
return kSrcOver_SkXfermodeInterpretation;
}
return kNormal_SkXfermodeInterpretation;
- case SkBlendMode::kDst:
+ case SkXfermode::kDst_Mode:
return kSkipDrawing_SkXfermodeInterpretation;
- case SkBlendMode::kDstOver:
+ case SkXfermode::kDstOver_Mode:
if (dstIsOpaque) {
return kSkipDrawing_SkXfermodeInterpretation;
}
return kNormal_SkXfermodeInterpretation;
- case SkBlendMode::kSrcIn:
+ case SkXfermode::kSrcIn_Mode:
if (dstIsOpaque && just_solid_color(paint)) {
return kSrcOver_SkXfermodeInterpretation;
}
return kNormal_SkXfermodeInterpretation;
- case SkBlendMode::kDstIn:
+ case SkXfermode::kDstIn_Mode:
if (just_solid_color(paint)) {
return kSkipDrawing_SkXfermodeInterpretation;
}