diff options
author | pdr <pdr@chromium.org> | 2015-02-24 14:38:32 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-24 22:40:02 +0000 |
commit | ce0b702f48b229e94ee6593e58dccd6f1d690687 (patch) | |
tree | 0e4d6536967b5710b71a2279c0215ae23746ea32 /cc/blink | |
parent | 19274bdda7b8038580d27020098b5a0c3941d985 (diff) | |
download | chromium_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')
-rw-r--r-- | cc/blink/web_display_item_list_impl.cc | 24 | ||||
-rw-r--r-- | cc/blink/web_display_item_list_impl.h | 6 |
2 files changed, 26 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) { diff --git a/cc/blink/web_display_item_list_impl.h b/cc/blink/web_display_item_list_impl.h index 8ec7a152..b287704 100644 --- a/cc/blink/web_display_item_list_impl.h +++ b/cc/blink/web_display_item_list_impl.h @@ -14,8 +14,10 @@ #include "third_party/WebKit/public/platform/WebFloatPoint.h" #include "third_party/WebKit/public/platform/WebVector.h" #include "third_party/skia/include/core/SkRegion.h" +#include "third_party/skia/include/core/SkXfermode.h" #include "ui/gfx/geometry/point_f.h" +class SkColorFilter; class SkImageFilter; class SkMatrix44; class SkPath; @@ -48,6 +50,10 @@ class WebDisplayItemListImpl : public blink::WebDisplayItemList { virtual void appendTransparencyItem(float opacity, blink::WebBlendMode blend_mode); virtual void appendEndTransparencyItem(); + virtual void appendCompositingItem(float opacity, + SkXfermode::Mode, + SkColorFilter*); + virtual void appendEndCompositingItem(); virtual void appendFilterItem(const blink::WebFilterOperations& filters, const blink::WebFloatRect& bounds); virtual void appendEndFilterItem(); |