diff options
author | 2016-10-03 21:34:16 +0000 | |
---|---|---|
committer | 2016-10-03 21:34:36 +0000 | |
commit | 2cbcd12281ee807214df094964c584c78932e10b (patch) | |
tree | 456f2c92158b18a8b010cc6e5bb594b73fbb998e /src/core/SkXfermodeInterpretation.cpp | |
parent | 418374c0d27280f3a1161601ae5fab28a76a0d3c (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.cpp | 25 |
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; } |