Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: Source/platform/graphics/skia/SkiaUtils.cpp

Issue 661053003: Make beginLayer() and CanvasRenderingContext2D use SkXfermode::Mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase to ToT Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/graphics/skia/SkiaUtils.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/graphics/skia/SkiaUtils.cpp
diff --git a/Source/platform/graphics/skia/SkiaUtils.cpp b/Source/platform/graphics/skia/SkiaUtils.cpp
index ae21e4c6ea09b85dc237ca7fcc0da4fa728c213b..e5447e28418438ed192a2df2d851d13bab6d90c8 100644
--- a/Source/platform/graphics/skia/SkiaUtils.cpp
+++ b/Source/platform/graphics/skia/SkiaUtils.cpp
@@ -79,6 +79,7 @@ static const SkXfermode::Mode gMapBlendOpsToXfermodeModes[] = {
SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator op, WebBlendMode blendMode)
{
+ ASSERT(op == CompositeSourceOver || blendMode == WebBlendModeNormal);
if (blendMode != WebBlendModeNormal) {
if (static_cast<uint8_t>(blendMode) >= SK_ARRAY_COUNT(gMapBlendOpsToXfermodeModes)) {
SkDEBUGF(("GraphicsContext::setPlatformCompositeOperation unknown WebBlendMode %d\n", blendMode));
@@ -96,6 +97,80 @@ SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator op, WebBlendM
return table[static_cast<uint8_t>(op)].m_xfermodeMode;
}
+CompositeOperator compositeOperatorFromSkia(SkXfermode::Mode xferMode)
+{
+ switch (xferMode) {
+ case SkXfermode::kClear_Mode:
+ return CompositeClear;
+ case SkXfermode::kSrc_Mode:
+ return CompositeCopy;
+ case SkXfermode::kSrcOver_Mode:
+ return CompositeSourceOver;
+ case SkXfermode::kSrcIn_Mode:
+ return CompositeSourceIn;
+ case SkXfermode::kSrcOut_Mode:
+ return CompositeSourceOut;
+ case SkXfermode::kSrcATop_Mode:
+ return CompositeSourceAtop;
+ case SkXfermode::kDstOver_Mode:
+ return CompositeDestinationOver;
+ case SkXfermode::kDstIn_Mode:
+ return CompositeDestinationIn;
+ case SkXfermode::kDstOut_Mode:
+ return CompositeDestinationOut;
+ case SkXfermode::kDstATop_Mode:
+ return CompositeDestinationAtop;
+ case SkXfermode::kXor_Mode:
+ return CompositeXOR;
+ case SkXfermode::kPlus_Mode:
+ return CompositePlusLighter;
+ default:
+ break;
+ }
+ return CompositeSourceOver;
+}
+
+WebBlendMode blendModeFromSkia(SkXfermode::Mode xferMode)
+{
+ switch (xferMode) {
+ case SkXfermode::kSrcOver_Mode:
+ return WebBlendModeNormal;
+ case SkXfermode::kMultiply_Mode:
+ return WebBlendModeMultiply;
+ case SkXfermode::kScreen_Mode:
+ return WebBlendModeScreen;
+ case SkXfermode::kOverlay_Mode:
+ return WebBlendModeOverlay;
+ case SkXfermode::kDarken_Mode:
+ return WebBlendModeDarken;
+ case SkXfermode::kLighten_Mode:
+ return WebBlendModeLighten;
+ case SkXfermode::kColorDodge_Mode:
+ return WebBlendModeColorDodge;
+ case SkXfermode::kColorBurn_Mode:
+ return WebBlendModeColorBurn;
+ case SkXfermode::kHardLight_Mode:
+ return WebBlendModeHardLight;
+ case SkXfermode::kSoftLight_Mode:
+ return WebBlendModeSoftLight;
+ case SkXfermode::kDifference_Mode:
+ return WebBlendModeDifference;
+ case SkXfermode::kExclusion_Mode:
+ return WebBlendModeExclusion;
+ case SkXfermode::kHue_Mode:
+ return WebBlendModeHue;
+ case SkXfermode::kSaturation_Mode:
+ return WebBlendModeSaturation;
+ case SkXfermode::kColor_Mode:
+ return WebBlendModeColor;
+ case SkXfermode::kLuminosity_Mode:
+ return WebBlendModeLuminosity;
+ default:
+ break;
+ }
+ return WebBlendModeNormal;
+}
+
bool SkPathContainsPoint(const SkPath& originalPath, const FloatPoint& point, SkPath::FillType ft)
{
SkRect bounds = originalPath.getBounds();
« no previous file with comments | « Source/platform/graphics/skia/SkiaUtils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698