Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Side by Side Diff: cc/blink/web_display_item_list_impl.cc

Issue 1423653005: Further plumb visual rect into cc:DisplayItemList. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix clip recorder params in omnibox. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | cc/layers/picture_image_layer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_filter_operations_impl.h" 9 #include "cc/blink/web_filter_operations_impl.h"
10 #include "cc/playback/clip_display_item.h" 10 #include "cc/playback/clip_display_item.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 WebDisplayItemListImpl::WebDisplayItemListImpl( 44 WebDisplayItemListImpl::WebDisplayItemListImpl(
45 cc::DisplayItemList* display_list) 45 cc::DisplayItemList* display_list)
46 : display_item_list_(display_list) { 46 : display_item_list_(display_list) {
47 } 47 }
48 48
49 void WebDisplayItemListImpl::appendDrawingItem( 49 void WebDisplayItemListImpl::appendDrawingItem(
50 const blink::WebRect& visual_rect, 50 const blink::WebRect& visual_rect,
51 const SkPicture* picture) { 51 const SkPicture* picture) {
52 if (display_item_list_->RetainsIndividualDisplayItems()) { 52 if (display_item_list_->RetainsIndividualDisplayItems()) {
53 auto* item = 53 auto* item =
54 display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>(); 54 display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>(
55 visual_rect);
55 item->SetNew(skia::SharePtr(const_cast<SkPicture*>(picture))); 56 item->SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
56 } else { 57 } else {
57 cc::DrawingDisplayItem item; 58 cc::DrawingDisplayItem item;
58 item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture))); 59 item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
59 display_item_list_->RasterIntoCanvas(item); 60 display_item_list_->RasterIntoCanvas(item);
60 } 61 }
61 } 62 }
62 63
63 void WebDisplayItemListImpl::appendClipItem( 64 void WebDisplayItemListImpl::appendClipItem(
64 const blink::WebRect& visual_rect, 65 const blink::WebRect& visual_rect,
65 const blink::WebRect& clip_rect, 66 const blink::WebRect& clip_rect,
66 const blink::WebVector<SkRRect>& rounded_clip_rects) { 67 const blink::WebVector<SkRRect>& rounded_clip_rects) {
67 std::vector<SkRRect> rounded_rects; 68 std::vector<SkRRect> rounded_rects;
68 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) { 69 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) {
69 rounded_rects.push_back(rounded_clip_rects[i]); 70 rounded_rects.push_back(rounded_clip_rects[i]);
70 } 71 }
71 if (display_item_list_->RetainsIndividualDisplayItems()) { 72 if (display_item_list_->RetainsIndividualDisplayItems()) {
72 auto* item = display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>(); 73 auto* item = display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>(
74 visual_rect);
73 item->SetNew(clip_rect, rounded_rects); 75 item->SetNew(clip_rect, rounded_rects);
74 } else { 76 } else {
75 cc::ClipDisplayItem item; 77 cc::ClipDisplayItem item;
76 item.SetNew(clip_rect, rounded_rects); 78 item.SetNew(clip_rect, rounded_rects);
77 display_item_list_->RasterIntoCanvas(item); 79 display_item_list_->RasterIntoCanvas(item);
78 } 80 }
79 } 81 }
80 82
81 void WebDisplayItemListImpl::appendEndClipItem( 83 void WebDisplayItemListImpl::appendEndClipItem(
82 const blink::WebRect& visual_rect) { 84 const blink::WebRect& visual_rect) {
83 if (display_item_list_->RetainsIndividualDisplayItems()) { 85 if (display_item_list_->RetainsIndividualDisplayItems()) {
84 display_item_list_->CreateAndAppendItem<cc::EndClipDisplayItem>(); 86 display_item_list_->CreateAndAppendItem<cc::EndClipDisplayItem>(
87 visual_rect);
85 } else { 88 } else {
86 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem()); 89 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem());
87 } 90 }
88 } 91 }
89 92
90 void WebDisplayItemListImpl::appendClipPathItem( 93 void WebDisplayItemListImpl::appendClipPathItem(
91 const blink::WebRect& visual_rect, 94 const blink::WebRect& visual_rect,
92 const SkPath& clip_path, 95 const SkPath& clip_path,
93 SkRegion::Op clip_op, 96 SkRegion::Op clip_op,
94 bool antialias) { 97 bool antialias) {
95 if (display_item_list_->RetainsIndividualDisplayItems()) { 98 if (display_item_list_->RetainsIndividualDisplayItems()) {
96 auto* item = 99 auto* item =
97 display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(); 100 display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
101 visual_rect);
98 item->SetNew(clip_path, clip_op, antialias); 102 item->SetNew(clip_path, clip_op, antialias);
99 } else { 103 } else {
100 cc::ClipPathDisplayItem item; 104 cc::ClipPathDisplayItem item;
101 item.SetNew(clip_path, clip_op, antialias); 105 item.SetNew(clip_path, clip_op, antialias);
102 display_item_list_->RasterIntoCanvas(item); 106 display_item_list_->RasterIntoCanvas(item);
103 } 107 }
104 } 108 }
105 109
106 void WebDisplayItemListImpl::appendEndClipPathItem( 110 void WebDisplayItemListImpl::appendEndClipPathItem(
107 const blink::WebRect& visual_rect) { 111 const blink::WebRect& visual_rect) {
108 if (display_item_list_->RetainsIndividualDisplayItems()) { 112 if (display_item_list_->RetainsIndividualDisplayItems()) {
109 display_item_list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>(); 113 display_item_list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>(
114 visual_rect);
110 } else { 115 } else {
111 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem()); 116 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem());
112 } 117 }
113 } 118 }
114 119
115 void WebDisplayItemListImpl::appendFloatClipItem( 120 void WebDisplayItemListImpl::appendFloatClipItem(
116 const blink::WebRect& visual_rect, 121 const blink::WebRect& visual_rect,
117 const blink::WebFloatRect& clip_rect) { 122 const blink::WebFloatRect& clip_rect) {
118 if (display_item_list_->RetainsIndividualDisplayItems()) { 123 if (display_item_list_->RetainsIndividualDisplayItems()) {
119 auto* item = 124 auto* item =
120 display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>(); 125 display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>(
126 visual_rect);
121 item->SetNew(clip_rect); 127 item->SetNew(clip_rect);
122 } else { 128 } else {
123 cc::FloatClipDisplayItem item; 129 cc::FloatClipDisplayItem item;
124 item.SetNew(clip_rect); 130 item.SetNew(clip_rect);
125 display_item_list_->RasterIntoCanvas(item); 131 display_item_list_->RasterIntoCanvas(item);
126 } 132 }
127 } 133 }
128 134
129 void WebDisplayItemListImpl::appendEndFloatClipItem( 135 void WebDisplayItemListImpl::appendEndFloatClipItem(
130 const blink::WebRect& visual_rect) { 136 const blink::WebRect& visual_rect) {
131 if (display_item_list_->RetainsIndividualDisplayItems()) { 137 if (display_item_list_->RetainsIndividualDisplayItems()) {
132 display_item_list_->CreateAndAppendItem<cc::EndFloatClipDisplayItem>(); 138 display_item_list_->CreateAndAppendItem<cc::EndFloatClipDisplayItem>(
139 visual_rect);
133 } else { 140 } else {
134 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem()); 141 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem());
135 } 142 }
136 } 143 }
137 144
138 void WebDisplayItemListImpl::appendTransformItem( 145 void WebDisplayItemListImpl::appendTransformItem(
139 const blink::WebRect& visual_rect, 146 const blink::WebRect& visual_rect,
140 const SkMatrix44& matrix) { 147 const SkMatrix44& matrix) {
141 gfx::Transform transform; 148 gfx::Transform transform;
142 transform.matrix() = matrix; 149 transform.matrix() = matrix;
143 150
144 if (display_item_list_->RetainsIndividualDisplayItems()) { 151 if (display_item_list_->RetainsIndividualDisplayItems()) {
145 auto* item = 152 auto* item =
146 display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>(); 153 display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>(
154 visual_rect);
147 item->SetNew(transform); 155 item->SetNew(transform);
148 } else { 156 } else {
149 cc::TransformDisplayItem item; 157 cc::TransformDisplayItem item;
150 item.SetNew(transform); 158 item.SetNew(transform);
151 display_item_list_->RasterIntoCanvas(item); 159 display_item_list_->RasterIntoCanvas(item);
152 } 160 }
153 } 161 }
154 162
155 void WebDisplayItemListImpl::appendEndTransformItem( 163 void WebDisplayItemListImpl::appendEndTransformItem(
156 const blink::WebRect& visual_rect) { 164 const blink::WebRect& visual_rect) {
157 if (display_item_list_->RetainsIndividualDisplayItems()) { 165 if (display_item_list_->RetainsIndividualDisplayItems()) {
158 display_item_list_->CreateAndAppendItem<cc::EndTransformDisplayItem>(); 166 display_item_list_->CreateAndAppendItem<cc::EndTransformDisplayItem>(
167 visual_rect);
159 } else { 168 } else {
160 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem()); 169 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem());
161 } 170 }
162 } 171 }
163 172
164 void WebDisplayItemListImpl::appendCompositingItem( 173 void WebDisplayItemListImpl::appendCompositingItem(
165 const blink::WebRect& visual_rect, 174 const blink::WebRect& visual_rect,
166 float opacity, 175 float opacity,
167 SkXfermode::Mode xfermode, 176 SkXfermode::Mode xfermode,
168 SkRect* bounds, 177 SkRect* bounds,
169 SkColorFilter* color_filter) { 178 SkColorFilter* color_filter) {
170 DCHECK_GE(opacity, 0.f); 179 DCHECK_GE(opacity, 0.f);
171 DCHECK_LE(opacity, 1.f); 180 DCHECK_LE(opacity, 1.f);
172 // TODO(ajuma): This should really be rounding instead of flooring the alpha 181 // TODO(ajuma): This should really be rounding instead of flooring the alpha
173 // value, but that breaks slimming paint reftests. 182 // value, but that breaks slimming paint reftests.
174 183
175 if (display_item_list_->RetainsIndividualDisplayItems()) { 184 if (display_item_list_->RetainsIndividualDisplayItems()) {
176 auto* item = 185 auto* item =
177 display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>(); 186 display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>(
187 visual_rect);
178 item->SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), 188 item->SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
179 xfermode, bounds, skia::SharePtr(color_filter)); 189 xfermode, bounds, skia::SharePtr(color_filter));
180 } else { 190 } else {
181 cc::CompositingDisplayItem item; 191 cc::CompositingDisplayItem item;
182 item.SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), 192 item.SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
183 xfermode, bounds, skia::SharePtr(color_filter)); 193 xfermode, bounds, skia::SharePtr(color_filter));
184 display_item_list_->RasterIntoCanvas(item); 194 display_item_list_->RasterIntoCanvas(item);
185 } 195 }
186 } 196 }
187 197
188 void WebDisplayItemListImpl::appendEndCompositingItem( 198 void WebDisplayItemListImpl::appendEndCompositingItem(
189 const blink::WebRect& visual_rect) { 199 const blink::WebRect& visual_rect) {
190 if (display_item_list_->RetainsIndividualDisplayItems()) { 200 if (display_item_list_->RetainsIndividualDisplayItems()) {
191 display_item_list_->CreateAndAppendItem<cc::EndCompositingDisplayItem>(); 201 display_item_list_->CreateAndAppendItem<cc::EndCompositingDisplayItem>(
202 visual_rect);
192 } else { 203 } else {
193 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem()); 204 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem());
194 } 205 }
195 } 206 }
196 207
197 void WebDisplayItemListImpl::appendFilterItem( 208 void WebDisplayItemListImpl::appendFilterItem(
198 const blink::WebRect& visual_rect, 209 const blink::WebRect& visual_rect,
199 const blink::WebFilterOperations& filters, 210 const blink::WebFilterOperations& filters,
200 const blink::WebFloatRect& bounds) { 211 const blink::WebFloatRect& bounds) {
201 const WebFilterOperationsImpl& filters_impl = 212 const WebFilterOperationsImpl& filters_impl =
202 static_cast<const WebFilterOperationsImpl&>(filters); 213 static_cast<const WebFilterOperationsImpl&>(filters);
203 214
204 if (display_item_list_->RetainsIndividualDisplayItems()) { 215 if (display_item_list_->RetainsIndividualDisplayItems()) {
205 auto* item = 216 auto* item = display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>(
206 display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>(); 217 visual_rect);
207 item->SetNew(filters_impl.AsFilterOperations(), bounds); 218 item->SetNew(filters_impl.AsFilterOperations(), bounds);
208 } else { 219 } else {
209 cc::FilterDisplayItem item; 220 cc::FilterDisplayItem item;
210 item.SetNew(filters_impl.AsFilterOperations(), bounds); 221 item.SetNew(filters_impl.AsFilterOperations(), bounds);
211 display_item_list_->RasterIntoCanvas(item); 222 display_item_list_->RasterIntoCanvas(item);
212 } 223 }
213 } 224 }
214 225
215 void WebDisplayItemListImpl::appendEndFilterItem( 226 void WebDisplayItemListImpl::appendEndFilterItem(
216 const blink::WebRect& visual_rect) { 227 const blink::WebRect& visual_rect) {
217 if (display_item_list_->RetainsIndividualDisplayItems()) { 228 if (display_item_list_->RetainsIndividualDisplayItems()) {
218 display_item_list_->CreateAndAppendItem<cc::EndFilterDisplayItem>(); 229 display_item_list_->CreateAndAppendItem<cc::EndFilterDisplayItem>(
230 visual_rect);
219 } else { 231 } else {
220 display_item_list_->RasterIntoCanvas(cc::EndFilterDisplayItem()); 232 display_item_list_->RasterIntoCanvas(cc::EndFilterDisplayItem());
221 } 233 }
222 } 234 }
223 235
224 void WebDisplayItemListImpl::appendScrollItem( 236 void WebDisplayItemListImpl::appendScrollItem(
225 const blink::WebRect& visual_rect, 237 const blink::WebRect& visual_rect,
226 const blink::WebSize& scroll_offset, 238 const blink::WebSize& scroll_offset,
227 ScrollContainerId) { 239 ScrollContainerId) {
228 SkMatrix44 matrix; 240 SkMatrix44 matrix;
229 matrix.setTranslate(-scroll_offset.width, -scroll_offset.height, 0); 241 matrix.setTranslate(-scroll_offset.width, -scroll_offset.height, 0);
230 // TODO(wkorman): Should we translate the visual rect as well? 242 // TODO(wkorman): Should we translate the visual rect as well?
231 appendTransformItem(visual_rect, matrix); 243 appendTransformItem(visual_rect, matrix);
232 } 244 }
233 245
234 void WebDisplayItemListImpl::appendEndScrollItem( 246 void WebDisplayItemListImpl::appendEndScrollItem(
235 const blink::WebRect& visual_rect) { 247 const blink::WebRect& visual_rect) {
236 appendEndTransformItem(visual_rect); 248 appendEndTransformItem(visual_rect);
237 } 249 }
238 250
239 WebDisplayItemListImpl::~WebDisplayItemListImpl() { 251 WebDisplayItemListImpl::~WebDisplayItemListImpl() {
240 } 252 }
241 253
242 } // namespace cc_blink 254 } // namespace cc_blink
OLDNEW
« no previous file with comments | « no previous file | cc/layers/picture_image_layer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698