summaryrefslogtreecommitdiffstats
path: root/cc/blink/web_display_item_list_impl.cc
diff options
context:
space:
mode:
authorpdr <pdr@chromium.org>2015-02-24 14:38:32 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-24 22:40:02 +0000
commitce0b702f48b229e94ee6593e58dccd6f1d690687 (patch)
tree0e4d6536967b5710b71a2279c0215ae23746ea32 /cc/blink/web_display_item_list_impl.cc
parent19274bdda7b8038580d27020098b5a0c3941d985 (diff)
downloadchromium_src-ce0b702f48b229e94ee6593e58dccd6f1d690687.zip
chromium_src-ce0b702f48b229e94ee6593e58dccd6f1d690687.tar.gz
chromium_src-ce0b702f48b229e94ee6593e58dccd6f1d690687.tar.bz2
Add a compositing display item which replaces transparency display item
This patch adds a compositing display item which is similar to the transparency display item (to be removed in a followup) but sports SkXfermode (combining blendmode and compositing op) as well as color filters. With this new object we can implement SVG masking. See associated blink patch: https://codereview.chromium.org/947893002 Review URL: https://codereview.chromium.org/942403002 Cr-Commit-Position: refs/heads/master@{#317905}
Diffstat (limited to 'cc/blink/web_display_item_list_impl.cc')
-rw-r--r--cc/blink/web_display_item_list_impl.cc24
1 files changed, 20 insertions, 4 deletions
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc
index 4941afe..5cbac73 100644
--- a/cc/blink/web_display_item_list_impl.cc
+++ b/cc/blink/web_display_item_list_impl.cc
@@ -10,6 +10,7 @@
#include "cc/blink/web_filter_operations_impl.h"
#include "cc/resources/clip_display_item.h"
#include "cc/resources/clip_path_display_item.h"
+#include "cc/resources/compositing_display_item.h"
#include "cc/resources/drawing_display_item.h"
#include "cc/resources/filter_display_item.h"
#include "cc/resources/float_clip_display_item.h"
@@ -18,6 +19,7 @@
#include "skia/ext/refptr.h"
#include "third_party/WebKit/public/platform/WebFloatRect.h"
#include "third_party/WebKit/public/platform/WebRect.h"
+#include "third_party/skia/include/core/SkColorFilter.h"
#include "third_party/skia/include/core/SkImageFilter.h"
#include "third_party/skia/include/core/SkPicture.h"
#include "third_party/skia/include/utils/SkMatrix44.h"
@@ -79,6 +81,11 @@ void WebDisplayItemListImpl::appendTransformItem(const SkMatrix44& matrix) {
display_item_list_->AppendItem(cc::TransformDisplayItem::Create(transform));
}
+void WebDisplayItemListImpl::appendEndTransformItem() {
+ display_item_list_->AppendItem(cc::EndTransformDisplayItem::Create());
+}
+
+// TODO(pdr): Remove once there are no more callers.
void WebDisplayItemListImpl::appendTransparencyItem(
float opacity,
blink::WebBlendMode blend_mode) {
@@ -86,14 +93,23 @@ void WebDisplayItemListImpl::appendTransparencyItem(
opacity, BlendModeToSkia(blend_mode)));
}
-void WebDisplayItemListImpl::appendEndTransformItem() {
- display_item_list_->AppendItem(cc::EndTransformDisplayItem::Create());
-}
-
+// TODO(pdr): Remove once there are no more callers.
void WebDisplayItemListImpl::appendEndTransparencyItem() {
display_item_list_->AppendItem(cc::EndTransparencyDisplayItem::Create());
}
+void WebDisplayItemListImpl::appendCompositingItem(
+ float opacity,
+ SkXfermode::Mode xfermode,
+ SkColorFilter* color_filter) {
+ display_item_list_->AppendItem(cc::CompositingDisplayItem::Create(
+ opacity, xfermode, skia::SharePtr(color_filter)));
+}
+
+void WebDisplayItemListImpl::appendEndCompositingItem() {
+ display_item_list_->AppendItem(cc::EndCompositingDisplayItem::Create());
+}
+
void WebDisplayItemListImpl::appendFilterItem(
const blink::WebFilterOperations& filters,
const blink::WebFloatRect& bounds) {