From 2cbcd12281ee807214df094964c584c78932e10b Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Mon, 3 Oct 2016 21:34:16 +0000 Subject: 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 > Commit-Queue: Mike Reed > 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 Commit-Queue: Mike Reed --- src/core/SkXfermodeInterpretation.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src/core/SkXfermodeInterpretation.cpp') 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; } -- cgit v1.2.3