diff options
author | ajuma <ajuma@chromium.org> | 2015-02-12 09:46:43 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-12 17:47:27 +0000 |
commit | a727ffce6d321dc5c05dcaa096b40394aa4370cc (patch) | |
tree | 2169b83f5767868ef3583ab930e085dc23de84ce /cc/blink/web_display_item_list_impl.cc | |
parent | faa39fa701d993eff9dae003354259d2aec253b1 (diff) | |
download | chromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.zip chromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.tar.gz chromium_src-a727ffce6d321dc5c05dcaa096b40394aa4370cc.tar.bz2 |
cc: Use FilterOperations instead of SkImageFilter in FilterDisplayItem
This replaces FilterDisplayItem's SkImageFilter with FilterOperations.
Currently, filters on Layers are set using FilterOperations; this allows
filters to be animated on the compositor thread. Using FilterOperations
rather than an SkImageFilter in FilterDisplayItems will allow cc to continue
to be able to animate filters once cc becomes responsible for layerization
decisions.
The Blink side of this is http://crrev.com/875423003
BUG=453924
Review URL: https://codereview.chromium.org/904513004
Cr-Commit-Position: refs/heads/master@{#315996}
Diffstat (limited to 'cc/blink/web_display_item_list_impl.cc')
-rw-r--r-- | cc/blink/web_display_item_list_impl.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc index fdd05df..879857c 100644 --- a/cc/blink/web_display_item_list_impl.cc +++ b/cc/blink/web_display_item_list_impl.cc @@ -7,6 +7,7 @@ #include <vector> #include "cc/blink/web_blend_mode.h" +#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/drawing_display_item.h" @@ -95,12 +96,26 @@ void WebDisplayItemListImpl::appendEndTransparencyItem() { display_item_list_->AppendItem(cc::EndTransparencyDisplayItem::Create()); } +#if FILTER_DISPLAY_ITEM_USES_FILTER_OPERATIONS +void WebDisplayItemListImpl::appendFilterItem( + const blink::WebFilterOperations& filters, + const blink::WebFloatRect& bounds) { + const WebFilterOperationsImpl& filters_impl = + static_cast<const WebFilterOperationsImpl&>(filters); + display_item_list_->AppendItem( + cc::FilterDisplayItem::Create(filters_impl.AsFilterOperations(), bounds)); +} +#else void WebDisplayItemListImpl::appendFilterItem( SkImageFilter* filter, const blink::WebFloatRect& bounds) { + cc::FilterOperations filter_operations; + filter_operations.Append( + cc::FilterOperation::CreateReferenceFilter(skia::SharePtr(filter))); display_item_list_->AppendItem( - cc::FilterDisplayItem::Create(skia::SharePtr(filter), bounds)); + cc::FilterDisplayItem::Create(filter_operations, bounds)); } +#endif void WebDisplayItemListImpl::appendEndFilterItem() { display_item_list_->AppendItem(cc::EndFilterDisplayItem::Create()); |