summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrosca@adobe.com <rosca@adobe.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 00:44:32 +0000
committerrosca@adobe.com <rosca@adobe.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-04 00:44:32 +0000
commit678dcbd4df160bd46d056c729ce8a5fa2cfa4b3e (patch)
tree24a972afcc4e26276ce73b70322f6fc5bbf1768d
parenta1f31e0245332abadd6e6a4ae92545097dfebeb7 (diff)
downloadchromium_src-678dcbd4df160bd46d056c729ce8a5fa2cfa4b3e.zip
chromium_src-678dcbd4df160bd46d056c729ce8a5fa2cfa4b3e.tar.gz
chromium_src-678dcbd4df160bd46d056c729ce8a5fa2cfa4b3e.tar.bz2
Renderer-compositor bindings for mix-blend-mode
This patch will link the blink implementation for mix-blend-mode with the compositor implementation. Blink: https://codereview.chromium.org/23511004/ Cc: https://codereview.chromium.org/23455060/ BUG=243223 Review URL: https://codereview.chromium.org/66263003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238498 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/renderer/compositor_bindings/web_blend_mode.h106
-rw-r--r--webkit/renderer/compositor_bindings/web_compositing_reasons.cc4
-rw-r--r--webkit/renderer/compositor_bindings/web_layer_impl.cc17
-rw-r--r--webkit/renderer/compositor_bindings/web_layer_impl.h4
4 files changed, 131 insertions, 0 deletions
diff --git a/webkit/renderer/compositor_bindings/web_blend_mode.h b/webkit/renderer/compositor_bindings/web_blend_mode.h
new file mode 100644
index 0000000..24236ff
--- /dev/null
+++ b/webkit/renderer/compositor_bindings/web_blend_mode.h
@@ -0,0 +1,106 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
+#define WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
+
+#include "third_party/WebKit/public/platform/WebBlendMode.h"
+
+namespace webkit {
+
+inline SkXfermode::Mode BlendModeToSkia(blink::WebBlendMode blend_mode) {
+ switch (blend_mode) {
+ case blink::WebBlendModeNormal:
+ return SkXfermode::kSrcOver_Mode;
+ case blink::WebBlendModeMultiply:
+ return SkXfermode::kMultiply_Mode;
+ case blink::WebBlendModeScreen:
+ return SkXfermode::kScreen_Mode;
+ case blink::WebBlendModeOverlay:
+ return SkXfermode::kOverlay_Mode;
+ case blink::WebBlendModeDarken:
+ return SkXfermode::kDarken_Mode;
+ case blink::WebBlendModeLighten:
+ return SkXfermode::kLighten_Mode;
+ case blink::WebBlendModeColorDodge:
+ return SkXfermode::kColorDodge_Mode;
+ case blink::WebBlendModeColorBurn:
+ return SkXfermode::kColorBurn_Mode;
+ case blink::WebBlendModeHardLight:
+ return SkXfermode::kHardLight_Mode;
+ case blink::WebBlendModeSoftLight:
+ return SkXfermode::kSoftLight_Mode;
+ case blink::WebBlendModeDifference:
+ return SkXfermode::kDifference_Mode;
+ case blink::WebBlendModeExclusion:
+ return SkXfermode::kExclusion_Mode;
+ case blink::WebBlendModeHue:
+ return SkXfermode::kHue_Mode;
+ case blink::WebBlendModeSaturation:
+ return SkXfermode::kSaturation_Mode;
+ case blink::WebBlendModeColor:
+ return SkXfermode::kColor_Mode;
+ case blink::WebBlendModeLuminosity:
+ return SkXfermode::kLuminosity_Mode;
+ }
+ return SkXfermode::kSrcOver_Mode;
+}
+
+inline blink::WebBlendMode BlendModeFromSkia(SkXfermode::Mode blend_mode) {
+ switch (blend_mode) {
+ case SkXfermode::kSrcOver_Mode:
+ return blink::WebBlendModeNormal;
+ case SkXfermode::kMultiply_Mode:
+ return blink::WebBlendModeMultiply;
+ case SkXfermode::kScreen_Mode:
+ return blink::WebBlendModeScreen;
+ case SkXfermode::kOverlay_Mode:
+ return blink::WebBlendModeOverlay;
+ case SkXfermode::kDarken_Mode:
+ return blink::WebBlendModeDarken;
+ case SkXfermode::kLighten_Mode:
+ return blink::WebBlendModeLighten;
+ case SkXfermode::kColorDodge_Mode:
+ return blink::WebBlendModeColorDodge;
+ case SkXfermode::kColorBurn_Mode:
+ return blink::WebBlendModeColorBurn;
+ case SkXfermode::kHardLight_Mode:
+ return blink::WebBlendModeHardLight;
+ case SkXfermode::kSoftLight_Mode:
+ return blink::WebBlendModeSoftLight;
+ case SkXfermode::kDifference_Mode:
+ return blink::WebBlendModeDifference;
+ case SkXfermode::kExclusion_Mode:
+ return blink::WebBlendModeExclusion;
+ case SkXfermode::kHue_Mode:
+ return blink::WebBlendModeHue;
+ case SkXfermode::kSaturation_Mode:
+ return blink::WebBlendModeSaturation;
+ case SkXfermode::kColor_Mode:
+ return blink::WebBlendModeColor;
+ case SkXfermode::kLuminosity_Mode:
+ return blink::WebBlendModeLuminosity;
+
+ // these value are SkXfermodes, but no blend modes.
+ case SkXfermode::kClear_Mode:
+ case SkXfermode::kSrc_Mode:
+ case SkXfermode::kDst_Mode:
+ case SkXfermode::kDstOver_Mode:
+ case SkXfermode::kSrcIn_Mode:
+ case SkXfermode::kDstIn_Mode:
+ case SkXfermode::kSrcOut_Mode:
+ case SkXfermode::kDstOut_Mode:
+ case SkXfermode::kSrcATop_Mode:
+ case SkXfermode::kDstATop_Mode:
+ case SkXfermode::kXor_Mode:
+ case SkXfermode::kPlus_Mode:
+ case SkXfermode::kModulate_Mode:
+ NOTREACHED();
+ }
+ return blink::WebBlendModeNormal;
+}
+
+} // namespace webkit
+
+#endif // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_
diff --git a/webkit/renderer/compositor_bindings/web_compositing_reasons.cc b/webkit/renderer/compositor_bindings/web_compositing_reasons.cc
index ae9d604..ace216b 100644
--- a/webkit/renderer/compositor_bindings/web_compositing_reasons.cc
+++ b/webkit/renderer/compositor_bindings/web_compositing_reasons.cc
@@ -145,3 +145,7 @@ COMPILE_ASSERT_MATCHING_UINT64(
COMPILE_ASSERT_MATCHING_UINT64(
cc::kCompositingReasonOutOfFlowClipping,
blink::CompositingReasonOutOfFlowClipping);
+
+COMPILE_ASSERT_MATCHING_UINT64(
+ cc::kCompositingReasonIsolateCompositedDescendants,
+ blink::CompositingReasonIsolateCompositedDescendants);
diff --git a/webkit/renderer/compositor_bindings/web_layer_impl.cc b/webkit/renderer/compositor_bindings/web_layer_impl.cc
index fdf719e..22a5485 100644
--- a/webkit/renderer/compositor_bindings/web_layer_impl.cc
+++ b/webkit/renderer/compositor_bindings/web_layer_impl.cc
@@ -22,6 +22,7 @@
#include "third_party/WebKit/public/platform/WebSize.h"
#include "third_party/skia/include/utils/SkMatrix44.h"
#include "webkit/renderer/compositor_bindings/web_animation_impl.h"
+#include "webkit/renderer/compositor_bindings/web_blend_mode.h"
#include "webkit/renderer/compositor_bindings/web_filter_operations_impl.h"
#include "webkit/renderer/compositor_bindings/web_to_cc_animation_delegate_adapter.h"
@@ -116,6 +117,22 @@ void WebLayerImpl::setOpacity(float opacity) { layer_->SetOpacity(opacity); }
float WebLayerImpl::opacity() const { return layer_->opacity(); }
+void WebLayerImpl::setBlendMode(blink::WebBlendMode blend_mode) {
+ layer_->SetBlendMode(BlendModeToSkia(blend_mode));
+}
+
+blink::WebBlendMode WebLayerImpl::blendMode() const {
+ return BlendModeFromSkia(layer_->blend_mode());
+}
+
+void WebLayerImpl::setIsRootForIsolatedGroup(bool isolate) {
+ layer_->SetIsRootForIsolatedGroup(isolate);
+}
+
+bool WebLayerImpl::isRootForIsolatedGroup() {
+ return layer_->is_root_for_isolated_group();
+}
+
void WebLayerImpl::setOpaque(bool opaque) { layer_->SetContentsOpaque(opaque); }
bool WebLayerImpl::opaque() const { return layer_->contents_opaque(); }
diff --git a/webkit/renderer/compositor_bindings/web_layer_impl.h b/webkit/renderer/compositor_bindings/web_layer_impl.h
index e189a70..011ec49 100644
--- a/webkit/renderer/compositor_bindings/web_layer_impl.h
+++ b/webkit/renderer/compositor_bindings/web_layer_impl.h
@@ -76,6 +76,10 @@ class WebLayerImpl : public blink::WebLayer, public cc::LayerClient {
virtual void setReplicaLayer(blink::WebLayer* replica);
virtual void setOpacity(float opacity);
virtual float opacity() const;
+ virtual void setBlendMode(blink::WebBlendMode blend_mode);
+ virtual blink::WebBlendMode blendMode() const;
+ virtual void setIsRootForIsolatedGroup(bool root);
+ virtual bool isRootForIsolatedGroup();
virtual void setOpaque(bool opaque);
virtual bool opaque() const;
virtual void setPosition(const blink::WebFloatPoint& position);