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

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

Issue 1494223003: cc: Shrink size of display item (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make SetNew private 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') | cc/playback/clip_display_item.h » ('J')
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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
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 display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>(
54 display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>( 54 visual_rect, skia::SharePtr(const_cast<SkPicture*>(picture)));
55 visual_rect);
56 item->SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
57 } else { 55 } else {
58 cc::DrawingDisplayItem item; 56 cc::DrawingDisplayItem item;
59 item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture))); 57 item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
60 display_item_list_->RasterIntoCanvas(item); 58 display_item_list_->RasterIntoCanvas(item);
61 } 59 }
62 } 60 }
63 61
64 void WebDisplayItemListImpl::appendClipItem( 62 void WebDisplayItemListImpl::appendClipItem(
65 const blink::WebRect& visual_rect, 63 const blink::WebRect& visual_rect,
66 const blink::WebRect& clip_rect, 64 const blink::WebRect& clip_rect,
67 const blink::WebVector<SkRRect>& rounded_clip_rects) { 65 const blink::WebVector<SkRRect>& rounded_clip_rects) {
68 std::vector<SkRRect> rounded_rects; 66 std::vector<SkRRect> rounded_rects;
69 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) { 67 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) {
70 rounded_rects.push_back(rounded_clip_rects[i]); 68 rounded_rects.push_back(rounded_clip_rects[i]);
71 } 69 }
72 if (display_item_list_->RetainsIndividualDisplayItems()) { 70 if (display_item_list_->RetainsIndividualDisplayItems()) {
73 auto* item = display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>( 71 display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>(
74 visual_rect); 72 visual_rect, clip_rect, rounded_rects);
75 item->SetNew(clip_rect, rounded_rects);
76 } else { 73 } else {
77 cc::ClipDisplayItem item; 74 cc::ClipDisplayItem item(clip_rect, rounded_rects);
78 item.SetNew(clip_rect, rounded_rects);
79 display_item_list_->RasterIntoCanvas(item); 75 display_item_list_->RasterIntoCanvas(item);
80 } 76 }
81 } 77 }
82 78
83 void WebDisplayItemListImpl::appendEndClipItem( 79 void WebDisplayItemListImpl::appendEndClipItem(
84 const blink::WebRect& visual_rect) { 80 const blink::WebRect& visual_rect) {
85 if (display_item_list_->RetainsIndividualDisplayItems()) { 81 if (display_item_list_->RetainsIndividualDisplayItems()) {
86 display_item_list_->CreateAndAppendItem<cc::EndClipDisplayItem>( 82 display_item_list_->CreateAndAppendItem<cc::EndClipDisplayItem>(
87 visual_rect); 83 visual_rect);
88 } else { 84 } else {
89 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem()); 85 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem());
90 } 86 }
91 } 87 }
92 88
93 void WebDisplayItemListImpl::appendClipPathItem( 89 void WebDisplayItemListImpl::appendClipPathItem(
94 const blink::WebRect& visual_rect, 90 const blink::WebRect& visual_rect,
95 const SkPath& clip_path, 91 const SkPath& clip_path,
96 SkRegion::Op clip_op, 92 SkRegion::Op clip_op,
97 bool antialias) { 93 bool antialias) {
98 if (display_item_list_->RetainsIndividualDisplayItems()) { 94 if (display_item_list_->RetainsIndividualDisplayItems()) {
99 auto* item = 95 display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
100 display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>( 96 visual_rect, clip_path, clip_op, antialias);
101 visual_rect);
102 item->SetNew(clip_path, clip_op, antialias);
103 } else { 97 } else {
104 cc::ClipPathDisplayItem item; 98 cc::ClipPathDisplayItem item(clip_path, clip_op, antialias);
105 item.SetNew(clip_path, clip_op, antialias);
106 display_item_list_->RasterIntoCanvas(item); 99 display_item_list_->RasterIntoCanvas(item);
107 } 100 }
108 } 101 }
109 102
110 void WebDisplayItemListImpl::appendEndClipPathItem( 103 void WebDisplayItemListImpl::appendEndClipPathItem(
111 const blink::WebRect& visual_rect) { 104 const blink::WebRect& visual_rect) {
112 if (display_item_list_->RetainsIndividualDisplayItems()) { 105 if (display_item_list_->RetainsIndividualDisplayItems()) {
113 display_item_list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>( 106 display_item_list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>(
114 visual_rect); 107 visual_rect);
115 } else { 108 } else {
116 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem()); 109 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem());
117 } 110 }
118 } 111 }
119 112
120 void WebDisplayItemListImpl::appendFloatClipItem( 113 void WebDisplayItemListImpl::appendFloatClipItem(
121 const blink::WebRect& visual_rect, 114 const blink::WebRect& visual_rect,
122 const blink::WebFloatRect& clip_rect) { 115 const blink::WebFloatRect& clip_rect) {
123 if (display_item_list_->RetainsIndividualDisplayItems()) { 116 if (display_item_list_->RetainsIndividualDisplayItems()) {
124 auto* item = 117 display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>(
125 display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>( 118 visual_rect, clip_rect);
126 visual_rect);
127 item->SetNew(clip_rect);
128 } else { 119 } else {
129 cc::FloatClipDisplayItem item; 120 cc::FloatClipDisplayItem item(clip_rect);
130 item.SetNew(clip_rect);
131 display_item_list_->RasterIntoCanvas(item); 121 display_item_list_->RasterIntoCanvas(item);
132 } 122 }
133 } 123 }
134 124
135 void WebDisplayItemListImpl::appendEndFloatClipItem( 125 void WebDisplayItemListImpl::appendEndFloatClipItem(
136 const blink::WebRect& visual_rect) { 126 const blink::WebRect& visual_rect) {
137 if (display_item_list_->RetainsIndividualDisplayItems()) { 127 if (display_item_list_->RetainsIndividualDisplayItems()) {
138 display_item_list_->CreateAndAppendItem<cc::EndFloatClipDisplayItem>( 128 display_item_list_->CreateAndAppendItem<cc::EndFloatClipDisplayItem>(
139 visual_rect); 129 visual_rect);
140 } else { 130 } else {
141 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem()); 131 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem());
142 } 132 }
143 } 133 }
144 134
145 void WebDisplayItemListImpl::appendTransformItem( 135 void WebDisplayItemListImpl::appendTransformItem(
146 const blink::WebRect& visual_rect, 136 const blink::WebRect& visual_rect,
147 const SkMatrix44& matrix) { 137 const SkMatrix44& matrix) {
148 gfx::Transform transform(gfx::Transform::kSkipInitialization); 138 gfx::Transform transform(gfx::Transform::kSkipInitialization);
149 transform.matrix() = matrix; 139 transform.matrix() = matrix;
150 140
151 if (display_item_list_->RetainsIndividualDisplayItems()) { 141 if (display_item_list_->RetainsIndividualDisplayItems()) {
152 auto* item = 142 display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>(
153 display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>( 143 visual_rect, transform);
154 visual_rect);
155 item->SetNew(transform);
156 } else { 144 } else {
157 cc::TransformDisplayItem item; 145 cc::TransformDisplayItem item(transform);
158 item.SetNew(transform);
159 display_item_list_->RasterIntoCanvas(item); 146 display_item_list_->RasterIntoCanvas(item);
160 } 147 }
161 } 148 }
162 149
163 void WebDisplayItemListImpl::appendEndTransformItem( 150 void WebDisplayItemListImpl::appendEndTransformItem(
164 const blink::WebRect& visual_rect) { 151 const blink::WebRect& visual_rect) {
165 if (display_item_list_->RetainsIndividualDisplayItems()) { 152 if (display_item_list_->RetainsIndividualDisplayItems()) {
166 display_item_list_->CreateAndAppendItem<cc::EndTransformDisplayItem>( 153 display_item_list_->CreateAndAppendItem<cc::EndTransformDisplayItem>(
167 visual_rect); 154 visual_rect);
168 } else { 155 } else {
169 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem()); 156 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem());
170 } 157 }
171 } 158 }
172 159
173 void WebDisplayItemListImpl::appendCompositingItem( 160 void WebDisplayItemListImpl::appendCompositingItem(
174 const blink::WebRect& visual_rect, 161 const blink::WebRect& visual_rect,
175 float opacity, 162 float opacity,
176 SkXfermode::Mode xfermode, 163 SkXfermode::Mode xfermode,
177 SkRect* bounds, 164 SkRect* bounds,
178 SkColorFilter* color_filter) { 165 SkColorFilter* color_filter) {
179 DCHECK_GE(opacity, 0.f); 166 DCHECK_GE(opacity, 0.f);
180 DCHECK_LE(opacity, 1.f); 167 DCHECK_LE(opacity, 1.f);
181 // TODO(ajuma): This should really be rounding instead of flooring the alpha 168 // TODO(ajuma): This should really be rounding instead of flooring the alpha
182 // value, but that breaks slimming paint reftests. 169 // value, but that breaks slimming paint reftests.
183 170
184 if (display_item_list_->RetainsIndividualDisplayItems()) { 171 if (display_item_list_->RetainsIndividualDisplayItems()) {
185 auto* item = 172 display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>(
186 display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>( 173 visual_rect, static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
187 visual_rect); 174 xfermode, bounds, skia::SharePtr(color_filter));
188 item->SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
189 xfermode, bounds, skia::SharePtr(color_filter));
190 } else { 175 } else {
191 cc::CompositingDisplayItem item; 176 cc::CompositingDisplayItem item(
192 item.SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), 177 static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode,
193 xfermode, bounds, skia::SharePtr(color_filter)); 178 bounds, skia::SharePtr(color_filter));
194 display_item_list_->RasterIntoCanvas(item); 179 display_item_list_->RasterIntoCanvas(item);
195 } 180 }
196 } 181 }
197 182
198 void WebDisplayItemListImpl::appendEndCompositingItem( 183 void WebDisplayItemListImpl::appendEndCompositingItem(
199 const blink::WebRect& visual_rect) { 184 const blink::WebRect& visual_rect) {
200 if (display_item_list_->RetainsIndividualDisplayItems()) { 185 if (display_item_list_->RetainsIndividualDisplayItems()) {
201 display_item_list_->CreateAndAppendItem<cc::EndCompositingDisplayItem>( 186 display_item_list_->CreateAndAppendItem<cc::EndCompositingDisplayItem>(
202 visual_rect); 187 visual_rect);
203 } else { 188 } else {
204 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem()); 189 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem());
205 } 190 }
206 } 191 }
207 192
208 void WebDisplayItemListImpl::appendFilterItem( 193 void WebDisplayItemListImpl::appendFilterItem(
209 const blink::WebRect& visual_rect, 194 const blink::WebRect& visual_rect,
210 const blink::WebFilterOperations& filters, 195 const blink::WebFilterOperations& filters,
211 const blink::WebFloatRect& bounds) { 196 const blink::WebFloatRect& bounds) {
212 const WebFilterOperationsImpl& filters_impl = 197 const WebFilterOperationsImpl& filters_impl =
213 static_cast<const WebFilterOperationsImpl&>(filters); 198 static_cast<const WebFilterOperationsImpl&>(filters);
214 199
215 if (display_item_list_->RetainsIndividualDisplayItems()) { 200 if (display_item_list_->RetainsIndividualDisplayItems()) {
216 auto* item = display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>( 201 display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>(
217 visual_rect); 202 visual_rect, filters_impl.AsFilterOperations(), bounds);
218 item->SetNew(filters_impl.AsFilterOperations(), bounds);
219 } else { 203 } else {
220 cc::FilterDisplayItem item; 204 cc::FilterDisplayItem item(filters_impl.AsFilterOperations(), bounds);
221 item.SetNew(filters_impl.AsFilterOperations(), bounds);
222 display_item_list_->RasterIntoCanvas(item); 205 display_item_list_->RasterIntoCanvas(item);
223 } 206 }
224 } 207 }
225 208
226 void WebDisplayItemListImpl::appendEndFilterItem( 209 void WebDisplayItemListImpl::appendEndFilterItem(
227 const blink::WebRect& visual_rect) { 210 const blink::WebRect& visual_rect) {
228 if (display_item_list_->RetainsIndividualDisplayItems()) { 211 if (display_item_list_->RetainsIndividualDisplayItems()) {
229 display_item_list_->CreateAndAppendItem<cc::EndFilterDisplayItem>( 212 display_item_list_->CreateAndAppendItem<cc::EndFilterDisplayItem>(
230 visual_rect); 213 visual_rect);
231 } else { 214 } else {
(...skipping 13 matching lines...) Expand all
245 228
246 void WebDisplayItemListImpl::appendEndScrollItem( 229 void WebDisplayItemListImpl::appendEndScrollItem(
247 const blink::WebRect& visual_rect) { 230 const blink::WebRect& visual_rect) {
248 appendEndTransformItem(visual_rect); 231 appendEndTransformItem(visual_rect);
249 } 232 }
250 233
251 WebDisplayItemListImpl::~WebDisplayItemListImpl() { 234 WebDisplayItemListImpl::~WebDisplayItemListImpl() {
252 } 235 }
253 236
254 } // namespace cc_blink 237 } // namespace cc_blink
OLDNEW
« no previous file with comments | « no previous file | cc/layers/picture_image_layer.cc » ('j') | cc/playback/clip_display_item.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698