OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/blink/web_display_item_list_impl.h" | 5 #include "cc/blink/web_display_item_list_impl.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/blink/web_blend_mode.h" | 9 #include "cc/blink/web_blend_mode.h" |
| 10 #include "cc/blink/web_filter_operations_impl.h" |
10 #include "cc/resources/clip_display_item.h" | 11 #include "cc/resources/clip_display_item.h" |
11 #include "cc/resources/clip_path_display_item.h" | 12 #include "cc/resources/clip_path_display_item.h" |
12 #include "cc/resources/drawing_display_item.h" | 13 #include "cc/resources/drawing_display_item.h" |
13 #include "cc/resources/filter_display_item.h" | 14 #include "cc/resources/filter_display_item.h" |
14 #include "cc/resources/float_clip_display_item.h" | 15 #include "cc/resources/float_clip_display_item.h" |
15 #include "cc/resources/transform_display_item.h" | 16 #include "cc/resources/transform_display_item.h" |
16 #include "cc/resources/transparency_display_item.h" | 17 #include "cc/resources/transparency_display_item.h" |
17 #include "skia/ext/refptr.h" | 18 #include "skia/ext/refptr.h" |
18 #include "third_party/WebKit/public/platform/WebFloatRect.h" | 19 #include "third_party/WebKit/public/platform/WebFloatRect.h" |
19 #include "third_party/WebKit/public/platform/WebRect.h" | 20 #include "third_party/WebKit/public/platform/WebRect.h" |
20 #include "third_party/skia/include/core/SkImageFilter.h" | 21 #include "third_party/skia/include/core/SkImageFilter.h" |
21 #include "third_party/skia/include/core/SkPicture.h" | 22 #include "third_party/skia/include/core/SkPicture.h" |
22 #include "third_party/skia/include/utils/SkMatrix44.h" | 23 #include "third_party/skia/include/utils/SkMatrix44.h" |
23 #include "ui/gfx/transform.h" | 24 #include "ui/gfx/transform.h" |
24 | 25 |
25 namespace cc_blink { | 26 namespace cc_blink { |
26 | 27 |
27 WebDisplayItemListImpl::WebDisplayItemListImpl() | 28 WebDisplayItemListImpl::WebDisplayItemListImpl() |
28 : display_item_list_(cc::DisplayItemList::Create()) { | 29 : display_item_list_(cc::DisplayItemList::Create()) { |
29 } | 30 } |
30 | 31 |
31 scoped_refptr<cc::DisplayItemList> WebDisplayItemListImpl::ToDisplayItemList() { | 32 scoped_refptr<cc::DisplayItemList> WebDisplayItemListImpl::ToDisplayItemList() { |
32 return display_item_list_; | 33 return display_item_list_; |
33 } | 34 } |
34 | 35 |
| 36 void WebDisplayItemListImpl::appendDrawingItem(const SkPicture* picture) { |
| 37 display_item_list_->AppendItem(cc::DrawingDisplayItem::Create( |
| 38 skia::SharePtr(const_cast<SkPicture*>(picture)), gfx::PointF(0, 0))); |
| 39 } |
| 40 |
35 void WebDisplayItemListImpl::appendDrawingItem( | 41 void WebDisplayItemListImpl::appendDrawingItem( |
36 SkPicture* picture, | 42 SkPicture* picture, |
37 const blink::WebFloatPoint& location) { | 43 const blink::WebFloatPoint& location) { |
38 display_item_list_->AppendItem( | 44 display_item_list_->AppendItem( |
39 cc::DrawingDisplayItem::Create(skia::SharePtr(picture), location)); | 45 cc::DrawingDisplayItem::Create(skia::SharePtr(picture), location)); |
40 } | 46 } |
41 | 47 |
42 void WebDisplayItemListImpl::appendClipItem( | 48 void WebDisplayItemListImpl::appendClipItem( |
43 const blink::WebRect& clip_rect, | 49 const blink::WebRect& clip_rect, |
44 const blink::WebVector<SkRRect>& rounded_clip_rects) { | 50 const blink::WebVector<SkRRect>& rounded_clip_rects) { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 } | 94 } |
89 | 95 |
90 void WebDisplayItemListImpl::appendEndTransformItem() { | 96 void WebDisplayItemListImpl::appendEndTransformItem() { |
91 display_item_list_->AppendItem(cc::EndTransformDisplayItem::Create()); | 97 display_item_list_->AppendItem(cc::EndTransformDisplayItem::Create()); |
92 } | 98 } |
93 | 99 |
94 void WebDisplayItemListImpl::appendEndTransparencyItem() { | 100 void WebDisplayItemListImpl::appendEndTransparencyItem() { |
95 display_item_list_->AppendItem(cc::EndTransparencyDisplayItem::Create()); | 101 display_item_list_->AppendItem(cc::EndTransparencyDisplayItem::Create()); |
96 } | 102 } |
97 | 103 |
| 104 #if FILTER_DISPLAY_ITEM_USES_FILTER_OPERATIONS |
| 105 void WebDisplayItemListImpl::appendFilterItem( |
| 106 const blink::WebFilterOperations& filters, |
| 107 const blink::WebFloatRect& bounds) { |
| 108 const WebFilterOperationsImpl& filters_impl = |
| 109 static_cast<const WebFilterOperationsImpl&>(filters); |
| 110 display_item_list_->AppendItem( |
| 111 cc::FilterDisplayItem::Create(filters_impl.AsFilterOperations(), bounds)); |
| 112 } |
| 113 #else |
98 void WebDisplayItemListImpl::appendFilterItem( | 114 void WebDisplayItemListImpl::appendFilterItem( |
99 SkImageFilter* filter, | 115 SkImageFilter* filter, |
100 const blink::WebFloatRect& bounds) { | 116 const blink::WebFloatRect& bounds) { |
| 117 cc::FilterOperations filter_operations; |
| 118 filter_operations.Append( |
| 119 cc::FilterOperation::CreateReferenceFilter(skia::SharePtr(filter))); |
101 display_item_list_->AppendItem( | 120 display_item_list_->AppendItem( |
102 cc::FilterDisplayItem::Create(skia::SharePtr(filter), bounds)); | 121 cc::FilterDisplayItem::Create(filter_operations, bounds)); |
103 } | 122 } |
| 123 #endif |
104 | 124 |
105 void WebDisplayItemListImpl::appendEndFilterItem() { | 125 void WebDisplayItemListImpl::appendEndFilterItem() { |
106 display_item_list_->AppendItem(cc::EndFilterDisplayItem::Create()); | 126 display_item_list_->AppendItem(cc::EndFilterDisplayItem::Create()); |
107 } | 127 } |
108 | 128 |
109 WebDisplayItemListImpl::~WebDisplayItemListImpl() { | 129 WebDisplayItemListImpl::~WebDisplayItemListImpl() { |
110 } | 130 } |
111 | 131 |
112 } // namespace cc_blink | 132 } // namespace cc_blink |
OLD | NEW |