OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "cc/layers/content_layer_client.h" | 8 #include "cc/layers/content_layer_client.h" |
9 #include "cc/layers/picture_image_layer.h" | 9 #include "cc/layers/picture_image_layer.h" |
10 #include "cc/layers/picture_layer.h" | 10 #include "cc/layers/picture_layer.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 TEST_P(LayerTreeHostMasksPixelTest, MaskOfLayer) { | 74 TEST_P(LayerTreeHostMasksPixelTest, MaskOfLayer) { |
75 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 75 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
76 gfx::Rect(100, 100), SK_ColorWHITE); | 76 gfx::Rect(100, 100), SK_ColorWHITE); |
77 | 77 |
78 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 78 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
79 gfx::Rect(25, 25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 79 gfx::Rect(25, 25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
80 background->AddChild(green); | 80 background->AddChild(green); |
81 | 81 |
82 gfx::Size mask_bounds(50, 50); | 82 gfx::Size mask_bounds(50, 50); |
83 MaskContentLayerClient client(mask_bounds); | 83 MaskContentLayerClient client(mask_bounds); |
84 scoped_refptr<PictureLayer> mask = | 84 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
85 PictureLayer::Create(layer_settings(), &client); | |
86 mask->SetBounds(mask_bounds); | 85 mask->SetBounds(mask_bounds); |
87 mask->SetIsDrawable(true); | 86 mask->SetIsDrawable(true); |
88 mask->SetIsMask(true); | 87 mask->SetIsMask(true); |
89 green->SetMaskLayer(mask.get()); | 88 green->SetMaskLayer(mask.get()); |
90 | 89 |
91 RunPixelResourceTest(background, | 90 RunPixelResourceTest(background, |
92 base::FilePath(FILE_PATH_LITERAL("mask_of_layer.png"))); | 91 base::FilePath(FILE_PATH_LITERAL("mask_of_layer.png"))); |
93 } | 92 } |
94 | 93 |
95 TEST_P(LayerTreeHostMasksPixelTest, ImageMaskOfLayer) { | 94 TEST_P(LayerTreeHostMasksPixelTest, ImageMaskOfLayer) { |
96 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 95 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
97 gfx::Rect(100, 100), SK_ColorWHITE); | 96 gfx::Rect(100, 100), SK_ColorWHITE); |
98 | 97 |
99 gfx::Size mask_bounds(50, 50); | 98 gfx::Size mask_bounds(50, 50); |
100 | 99 |
101 scoped_refptr<PictureImageLayer> mask = | 100 scoped_refptr<PictureImageLayer> mask = PictureImageLayer::Create(); |
102 PictureImageLayer::Create(layer_settings()); | |
103 mask->SetIsDrawable(true); | 101 mask->SetIsDrawable(true); |
104 mask->SetIsMask(true); | 102 mask->SetIsMask(true); |
105 mask->SetBounds(mask_bounds); | 103 mask->SetBounds(mask_bounds); |
106 | 104 |
107 skia::RefPtr<SkSurface> surface = | 105 skia::RefPtr<SkSurface> surface = |
108 skia::AdoptRef(SkSurface::NewRasterN32Premul(200, 200)); | 106 skia::AdoptRef(SkSurface::NewRasterN32Premul(200, 200)); |
109 SkCanvas* canvas = surface->getCanvas(); | 107 SkCanvas* canvas = surface->getCanvas(); |
110 canvas->scale(SkIntToScalar(4), SkIntToScalar(4)); | 108 canvas->scale(SkIntToScalar(4), SkIntToScalar(4)); |
111 MaskContentLayerClient client(mask_bounds); | 109 MaskContentLayerClient client(mask_bounds); |
112 scoped_refptr<DisplayItemList> mask_display_list = | 110 scoped_refptr<DisplayItemList> mask_display_list = |
(...skipping 11 matching lines...) Expand all Loading... |
124 | 122 |
125 RunPixelResourceTest( | 123 RunPixelResourceTest( |
126 background, base::FilePath(FILE_PATH_LITERAL("image_mask_of_layer.png"))); | 124 background, base::FilePath(FILE_PATH_LITERAL("image_mask_of_layer.png"))); |
127 } | 125 } |
128 | 126 |
129 TEST_P(LayerTreeHostMasksPixelTest, MaskOfClippedLayer) { | 127 TEST_P(LayerTreeHostMasksPixelTest, MaskOfClippedLayer) { |
130 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 128 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
131 gfx::Rect(100, 100), SK_ColorWHITE); | 129 gfx::Rect(100, 100), SK_ColorWHITE); |
132 | 130 |
133 // Clip to the top half of the green layer. | 131 // Clip to the top half of the green layer. |
134 scoped_refptr<Layer> clip = Layer::Create(layer_settings()); | 132 scoped_refptr<Layer> clip = Layer::Create(); |
135 clip->SetPosition(gfx::PointF()); | 133 clip->SetPosition(gfx::PointF()); |
136 clip->SetBounds(gfx::Size(100, 50)); | 134 clip->SetBounds(gfx::Size(100, 50)); |
137 clip->SetMasksToBounds(true); | 135 clip->SetMasksToBounds(true); |
138 background->AddChild(clip); | 136 background->AddChild(clip); |
139 | 137 |
140 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 138 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
141 gfx::Rect(25, 25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 139 gfx::Rect(25, 25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
142 clip->AddChild(green); | 140 clip->AddChild(green); |
143 | 141 |
144 gfx::Size mask_bounds(50, 50); | 142 gfx::Size mask_bounds(50, 50); |
145 MaskContentLayerClient client(mask_bounds); | 143 MaskContentLayerClient client(mask_bounds); |
146 scoped_refptr<PictureLayer> mask = | 144 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
147 PictureLayer::Create(layer_settings(), &client); | |
148 mask->SetBounds(mask_bounds); | 145 mask->SetBounds(mask_bounds); |
149 mask->SetIsDrawable(true); | 146 mask->SetIsDrawable(true); |
150 mask->SetIsMask(true); | 147 mask->SetIsMask(true); |
151 green->SetMaskLayer(mask.get()); | 148 green->SetMaskLayer(mask.get()); |
152 | 149 |
153 RunPixelResourceTest( | 150 RunPixelResourceTest( |
154 background, | 151 background, |
155 base::FilePath(FILE_PATH_LITERAL("mask_of_clipped_layer.png"))); | 152 base::FilePath(FILE_PATH_LITERAL("mask_of_clipped_layer.png"))); |
156 } | 153 } |
157 | 154 |
158 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplica) { | 155 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplica) { |
159 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 156 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
160 gfx::Rect(100, 100), SK_ColorWHITE); | 157 gfx::Rect(100, 100), SK_ColorWHITE); |
161 | 158 |
162 gfx::Size mask_bounds(50, 50); | 159 gfx::Size mask_bounds(50, 50); |
163 MaskContentLayerClient client(mask_bounds); | 160 MaskContentLayerClient client(mask_bounds); |
164 scoped_refptr<PictureLayer> mask = | 161 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
165 PictureLayer::Create(layer_settings(), &client); | |
166 mask->SetBounds(mask_bounds); | 162 mask->SetBounds(mask_bounds); |
167 mask->SetIsDrawable(true); | 163 mask->SetIsDrawable(true); |
168 mask->SetIsMask(true); | 164 mask->SetIsMask(true); |
169 | 165 |
170 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 166 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
171 gfx::Rect(0, 0, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 167 gfx::Rect(0, 0, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
172 background->AddChild(green); | 168 background->AddChild(green); |
173 green->SetMaskLayer(mask.get()); | 169 green->SetMaskLayer(mask.get()); |
174 | 170 |
175 gfx::Transform replica_transform; | 171 gfx::Transform replica_transform; |
176 replica_transform.Rotate(-90.0); | 172 replica_transform.Rotate(-90.0); |
177 | 173 |
178 scoped_refptr<Layer> replica = Layer::Create(layer_settings()); | 174 scoped_refptr<Layer> replica = Layer::Create(); |
179 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); | 175 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); |
180 replica->SetPosition(gfx::PointF(50.f, 50.f)); | 176 replica->SetPosition(gfx::PointF(50.f, 50.f)); |
181 replica->SetTransform(replica_transform); | 177 replica->SetTransform(replica_transform); |
182 green->SetReplicaLayer(replica.get()); | 178 green->SetReplicaLayer(replica.get()); |
183 | 179 |
184 RunPixelResourceTest( | 180 RunPixelResourceTest( |
185 background, base::FilePath(FILE_PATH_LITERAL("mask_with_replica.png"))); | 181 background, base::FilePath(FILE_PATH_LITERAL("mask_with_replica.png"))); |
186 } | 182 } |
187 | 183 |
188 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplicaOfClippedLayer) { | 184 TEST_P(LayerTreeHostMasksPixelTest, MaskWithReplicaOfClippedLayer) { |
189 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 185 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
190 gfx::Rect(100, 100), SK_ColorWHITE); | 186 gfx::Rect(100, 100), SK_ColorWHITE); |
191 | 187 |
192 gfx::Size mask_bounds(50, 50); | 188 gfx::Size mask_bounds(50, 50); |
193 MaskContentLayerClient client(mask_bounds); | 189 MaskContentLayerClient client(mask_bounds); |
194 scoped_refptr<PictureLayer> mask = | 190 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
195 PictureLayer::Create(layer_settings(), &client); | |
196 mask->SetBounds(mask_bounds); | 191 mask->SetBounds(mask_bounds); |
197 mask->SetIsDrawable(true); | 192 mask->SetIsDrawable(true); |
198 mask->SetIsMask(true); | 193 mask->SetIsMask(true); |
199 | 194 |
200 // Clip to the bottom half of the green layer, and the left half of the | 195 // Clip to the bottom half of the green layer, and the left half of the |
201 // replica. | 196 // replica. |
202 scoped_refptr<Layer> clip = Layer::Create(layer_settings()); | 197 scoped_refptr<Layer> clip = Layer::Create(); |
203 clip->SetPosition(gfx::PointF(0.f, 25.f)); | 198 clip->SetPosition(gfx::PointF(0.f, 25.f)); |
204 clip->SetBounds(gfx::Size(75, 75)); | 199 clip->SetBounds(gfx::Size(75, 75)); |
205 clip->SetMasksToBounds(true); | 200 clip->SetMasksToBounds(true); |
206 background->AddChild(clip); | 201 background->AddChild(clip); |
207 | 202 |
208 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 203 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
209 gfx::Rect(0, -25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 204 gfx::Rect(0, -25, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
210 clip->AddChild(green); | 205 clip->AddChild(green); |
211 green->SetMaskLayer(mask.get()); | 206 green->SetMaskLayer(mask.get()); |
212 | 207 |
213 gfx::Transform replica_transform; | 208 gfx::Transform replica_transform; |
214 replica_transform.Rotate(-90.0); | 209 replica_transform.Rotate(-90.0); |
215 | 210 |
216 scoped_refptr<Layer> replica = Layer::Create(layer_settings()); | 211 scoped_refptr<Layer> replica = Layer::Create(); |
217 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); | 212 replica->SetTransformOrigin(gfx::Point3F(25.f, 25.f, 0.f)); |
218 replica->SetPosition(gfx::PointF(50.f, 50.f)); | 213 replica->SetPosition(gfx::PointF(50.f, 50.f)); |
219 replica->SetTransform(replica_transform); | 214 replica->SetTransform(replica_transform); |
220 green->SetReplicaLayer(replica.get()); | 215 green->SetReplicaLayer(replica.get()); |
221 | 216 |
222 RunPixelResourceTest(background, | 217 RunPixelResourceTest(background, |
223 base::FilePath(FILE_PATH_LITERAL( | 218 base::FilePath(FILE_PATH_LITERAL( |
224 "mask_with_replica_of_clipped_layer.png"))); | 219 "mask_with_replica_of_clipped_layer.png"))); |
225 } | 220 } |
226 | 221 |
227 TEST_P(LayerTreeHostMasksPixelTest, MaskOfReplica) { | 222 TEST_P(LayerTreeHostMasksPixelTest, MaskOfReplica) { |
228 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 223 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
229 gfx::Rect(100, 100), SK_ColorWHITE); | 224 gfx::Rect(100, 100), SK_ColorWHITE); |
230 | 225 |
231 gfx::Size mask_bounds(50, 50); | 226 gfx::Size mask_bounds(50, 50); |
232 MaskContentLayerClient client(mask_bounds); | 227 MaskContentLayerClient client(mask_bounds); |
233 scoped_refptr<PictureLayer> mask = | 228 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
234 PictureLayer::Create(layer_settings(), &client); | |
235 mask->SetBounds(mask_bounds); | 229 mask->SetBounds(mask_bounds); |
236 mask->SetIsDrawable(true); | 230 mask->SetIsDrawable(true); |
237 mask->SetIsMask(true); | 231 mask->SetIsMask(true); |
238 | 232 |
239 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 233 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
240 gfx::Rect(25, 0, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 234 gfx::Rect(25, 0, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
241 background->AddChild(green); | 235 background->AddChild(green); |
242 | 236 |
243 scoped_refptr<SolidColorLayer> orange = CreateSolidColorLayer( | 237 scoped_refptr<SolidColorLayer> orange = CreateSolidColorLayer( |
244 gfx::Rect(-25, 25, 25, 25), kCSSOrange); | 238 gfx::Rect(-25, 25, 25, 25), kCSSOrange); |
245 green->AddChild(orange); | 239 green->AddChild(orange); |
246 | 240 |
247 gfx::Transform replica_transform; | 241 gfx::Transform replica_transform; |
248 replica_transform.Rotate(180.0); | 242 replica_transform.Rotate(180.0); |
249 replica_transform.Translate(50.0, 0.0); | 243 replica_transform.Translate(50.0, 0.0); |
250 | 244 |
251 scoped_refptr<Layer> replica = Layer::Create(layer_settings()); | 245 scoped_refptr<Layer> replica = Layer::Create(); |
252 replica->SetTransformOrigin(gfx::Point3F(50.f, 50.f, 0.f)); | 246 replica->SetTransformOrigin(gfx::Point3F(50.f, 50.f, 0.f)); |
253 replica->SetPosition(gfx::PointF()); | 247 replica->SetPosition(gfx::PointF()); |
254 replica->SetTransform(replica_transform); | 248 replica->SetTransform(replica_transform); |
255 replica->SetMaskLayer(mask.get()); | 249 replica->SetMaskLayer(mask.get()); |
256 green->SetReplicaLayer(replica.get()); | 250 green->SetReplicaLayer(replica.get()); |
257 | 251 |
258 RunPixelResourceTest( | 252 RunPixelResourceTest( |
259 background, base::FilePath(FILE_PATH_LITERAL("mask_of_replica.png"))); | 253 background, base::FilePath(FILE_PATH_LITERAL("mask_of_replica.png"))); |
260 } | 254 } |
261 | 255 |
262 TEST_P(LayerTreeHostMasksPixelTest, MaskOfReplicaOfClippedLayer) { | 256 TEST_P(LayerTreeHostMasksPixelTest, MaskOfReplicaOfClippedLayer) { |
263 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 257 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
264 gfx::Rect(100, 100), SK_ColorWHITE); | 258 gfx::Rect(100, 100), SK_ColorWHITE); |
265 | 259 |
266 gfx::Size mask_bounds(50, 50); | 260 gfx::Size mask_bounds(50, 50); |
267 MaskContentLayerClient client(mask_bounds); | 261 MaskContentLayerClient client(mask_bounds); |
268 scoped_refptr<PictureLayer> mask = | 262 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&client); |
269 PictureLayer::Create(layer_settings(), &client); | |
270 mask->SetBounds(mask_bounds); | 263 mask->SetBounds(mask_bounds); |
271 mask->SetIsDrawable(true); | 264 mask->SetIsDrawable(true); |
272 mask->SetIsMask(true); | 265 mask->SetIsMask(true); |
273 | 266 |
274 // Clip to the bottom 3/4 of the green layer, and the top 3/4 of the replica. | 267 // Clip to the bottom 3/4 of the green layer, and the top 3/4 of the replica. |
275 scoped_refptr<Layer> clip = Layer::Create(layer_settings()); | 268 scoped_refptr<Layer> clip = Layer::Create(); |
276 clip->SetPosition(gfx::PointF(0.f, 12.f)); | 269 clip->SetPosition(gfx::PointF(0.f, 12.f)); |
277 clip->SetBounds(gfx::Size(100, 75)); | 270 clip->SetBounds(gfx::Size(100, 75)); |
278 clip->SetMasksToBounds(true); | 271 clip->SetMasksToBounds(true); |
279 background->AddChild(clip); | 272 background->AddChild(clip); |
280 | 273 |
281 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( | 274 scoped_refptr<SolidColorLayer> green = CreateSolidColorLayerWithBorder( |
282 gfx::Rect(25, -12, 50, 50), kCSSGreen, 1, SK_ColorBLACK); | 275 gfx::Rect(25, -12, 50, 50), kCSSGreen, 1, SK_ColorBLACK); |
283 clip->AddChild(green); | 276 clip->AddChild(green); |
284 | 277 |
285 scoped_refptr<SolidColorLayer> orange = CreateSolidColorLayer( | 278 scoped_refptr<SolidColorLayer> orange = CreateSolidColorLayer( |
286 gfx::Rect(-25, 25, 25, 25), kCSSOrange); | 279 gfx::Rect(-25, 25, 25, 25), kCSSOrange); |
287 green->AddChild(orange); | 280 green->AddChild(orange); |
288 | 281 |
289 gfx::Transform replica_transform; | 282 gfx::Transform replica_transform; |
290 replica_transform.Rotate(180.0); | 283 replica_transform.Rotate(180.0); |
291 replica_transform.Translate(50.0, 0.0); | 284 replica_transform.Translate(50.0, 0.0); |
292 | 285 |
293 scoped_refptr<Layer> replica = Layer::Create(layer_settings()); | 286 scoped_refptr<Layer> replica = Layer::Create(); |
294 replica->SetTransformOrigin(gfx::Point3F(50.f, 50.f, 0.f)); | 287 replica->SetTransformOrigin(gfx::Point3F(50.f, 50.f, 0.f)); |
295 replica->SetPosition(gfx::PointF()); | 288 replica->SetPosition(gfx::PointF()); |
296 replica->SetTransform(replica_transform); | 289 replica->SetTransform(replica_transform); |
297 replica->SetMaskLayer(mask.get()); | 290 replica->SetMaskLayer(mask.get()); |
298 green->SetReplicaLayer(replica.get()); | 291 green->SetReplicaLayer(replica.get()); |
299 | 292 |
300 RunPixelResourceTest(background, | 293 RunPixelResourceTest(background, |
301 base::FilePath(FILE_PATH_LITERAL( | 294 base::FilePath(FILE_PATH_LITERAL( |
302 "mask_of_replica_of_clipped_layer.png"))); | 295 "mask_of_replica_of_clipped_layer.png"))); |
303 } | 296 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 GL_ZERO_COPY_RECT_DRAW, | 391 GL_ZERO_COPY_RECT_DRAW, |
399 GL_ZERO_COPY_EXTERNAL_DRAW)); | 392 GL_ZERO_COPY_EXTERNAL_DRAW)); |
400 | 393 |
401 TEST_P(LayerTreeHostMasksForBackgroundFiltersPixelTest, | 394 TEST_P(LayerTreeHostMasksForBackgroundFiltersPixelTest, |
402 MaskOfLayerWithBackgroundFilter) { | 395 MaskOfLayerWithBackgroundFilter) { |
403 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 396 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
404 gfx::Rect(100, 100), SK_ColorWHITE); | 397 gfx::Rect(100, 100), SK_ColorWHITE); |
405 | 398 |
406 gfx::Size picture_bounds(100, 100); | 399 gfx::Size picture_bounds(100, 100); |
407 CheckerContentLayerClient picture_client(picture_bounds, SK_ColorGREEN, true); | 400 CheckerContentLayerClient picture_client(picture_bounds, SK_ColorGREEN, true); |
408 scoped_refptr<PictureLayer> picture = | 401 scoped_refptr<PictureLayer> picture = PictureLayer::Create(&picture_client); |
409 PictureLayer::Create(layer_settings(), &picture_client); | |
410 picture->SetBounds(picture_bounds); | 402 picture->SetBounds(picture_bounds); |
411 picture->SetIsDrawable(true); | 403 picture->SetIsDrawable(true); |
412 | 404 |
413 scoped_refptr<SolidColorLayer> blur = CreateSolidColorLayer( | 405 scoped_refptr<SolidColorLayer> blur = CreateSolidColorLayer( |
414 gfx::Rect(100, 100), SK_ColorTRANSPARENT); | 406 gfx::Rect(100, 100), SK_ColorTRANSPARENT); |
415 background->AddChild(picture); | 407 background->AddChild(picture); |
416 background->AddChild(blur); | 408 background->AddChild(blur); |
417 | 409 |
418 FilterOperations filters; | 410 FilterOperations filters; |
419 filters.Append(FilterOperation::CreateGrayscaleFilter(1.0)); | 411 filters.Append(FilterOperation::CreateGrayscaleFilter(1.0)); |
420 blur->SetBackgroundFilters(filters); | 412 blur->SetBackgroundFilters(filters); |
421 | 413 |
422 gfx::Size mask_bounds(100, 100); | 414 gfx::Size mask_bounds(100, 100); |
423 CircleContentLayerClient mask_client(mask_bounds); | 415 CircleContentLayerClient mask_client(mask_bounds); |
424 scoped_refptr<PictureLayer> mask = | 416 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&mask_client); |
425 PictureLayer::Create(layer_settings(), &mask_client); | |
426 mask->SetBounds(mask_bounds); | 417 mask->SetBounds(mask_bounds); |
427 mask->SetIsDrawable(true); | 418 mask->SetIsDrawable(true); |
428 mask->SetIsMask(true); | 419 mask->SetIsMask(true); |
429 blur->SetMaskLayer(mask.get()); | 420 blur->SetMaskLayer(mask.get()); |
430 | 421 |
431 float percentage_pixels_large_error = 2.5f; // 2.5%, ~250px / (100*100) | 422 float percentage_pixels_large_error = 2.5f; // 2.5%, ~250px / (100*100) |
432 float percentage_pixels_small_error = 0.0f; | 423 float percentage_pixels_small_error = 0.0f; |
433 float average_error_allowed_in_bad_pixels = 100.0f; | 424 float average_error_allowed_in_bad_pixels = 100.0f; |
434 int large_error_allowed = 256; | 425 int large_error_allowed = 256; |
435 int small_error_allowed = 0; | 426 int small_error_allowed = 0; |
(...skipping 12 matching lines...) Expand all Loading... |
448 | 439 |
449 TEST_P(LayerTreeHostMasksForBackgroundFiltersPixelTest, | 440 TEST_P(LayerTreeHostMasksForBackgroundFiltersPixelTest, |
450 MaskOfLayerWithBlend) { | 441 MaskOfLayerWithBlend) { |
451 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( | 442 scoped_refptr<SolidColorLayer> background = CreateSolidColorLayer( |
452 gfx::Rect(128, 128), SK_ColorWHITE); | 443 gfx::Rect(128, 128), SK_ColorWHITE); |
453 | 444 |
454 gfx::Size picture_bounds(128, 128); | 445 gfx::Size picture_bounds(128, 128); |
455 CheckerContentLayerClient picture_client_vertical( | 446 CheckerContentLayerClient picture_client_vertical( |
456 picture_bounds, SK_ColorGREEN, true); | 447 picture_bounds, SK_ColorGREEN, true); |
457 scoped_refptr<PictureLayer> picture_vertical = | 448 scoped_refptr<PictureLayer> picture_vertical = |
458 PictureLayer::Create(layer_settings(), &picture_client_vertical); | 449 PictureLayer::Create(&picture_client_vertical); |
459 picture_vertical->SetBounds(picture_bounds); | 450 picture_vertical->SetBounds(picture_bounds); |
460 picture_vertical->SetIsDrawable(true); | 451 picture_vertical->SetIsDrawable(true); |
461 | 452 |
462 CheckerContentLayerClient picture_client_horizontal( | 453 CheckerContentLayerClient picture_client_horizontal( |
463 picture_bounds, SK_ColorMAGENTA, false); | 454 picture_bounds, SK_ColorMAGENTA, false); |
464 scoped_refptr<PictureLayer> picture_horizontal = | 455 scoped_refptr<PictureLayer> picture_horizontal = |
465 PictureLayer::Create(layer_settings(), &picture_client_horizontal); | 456 PictureLayer::Create(&picture_client_horizontal); |
466 picture_horizontal->SetBounds(picture_bounds); | 457 picture_horizontal->SetBounds(picture_bounds); |
467 picture_horizontal->SetIsDrawable(true); | 458 picture_horizontal->SetIsDrawable(true); |
468 picture_horizontal->SetContentsOpaque(false); | 459 picture_horizontal->SetContentsOpaque(false); |
469 picture_horizontal->SetBlendMode(SkXfermode::kMultiply_Mode); | 460 picture_horizontal->SetBlendMode(SkXfermode::kMultiply_Mode); |
470 | 461 |
471 background->AddChild(picture_vertical); | 462 background->AddChild(picture_vertical); |
472 background->AddChild(picture_horizontal); | 463 background->AddChild(picture_horizontal); |
473 | 464 |
474 gfx::Size mask_bounds(128, 128); | 465 gfx::Size mask_bounds(128, 128); |
475 CircleContentLayerClient mask_client(mask_bounds); | 466 CircleContentLayerClient mask_client(mask_bounds); |
476 scoped_refptr<PictureLayer> mask = | 467 scoped_refptr<PictureLayer> mask = PictureLayer::Create(&mask_client); |
477 PictureLayer::Create(layer_settings(), &mask_client); | |
478 mask->SetBounds(mask_bounds); | 468 mask->SetBounds(mask_bounds); |
479 mask->SetIsDrawable(true); | 469 mask->SetIsDrawable(true); |
480 mask->SetIsMask(true); | 470 mask->SetIsMask(true); |
481 picture_horizontal->SetMaskLayer(mask.get()); | 471 picture_horizontal->SetMaskLayer(mask.get()); |
482 | 472 |
483 float percentage_pixels_large_error = 0.04f; // 0.04%, ~6px / (128*128) | 473 float percentage_pixels_large_error = 0.04f; // 0.04%, ~6px / (128*128) |
484 float percentage_pixels_small_error = 0.0f; | 474 float percentage_pixels_small_error = 0.0f; |
485 float average_error_allowed_in_bad_pixels = 256.0f; | 475 float average_error_allowed_in_bad_pixels = 256.0f; |
486 int large_error_allowed = 256; | 476 int large_error_allowed = 256; |
487 int small_error_allowed = 0; | 477 int small_error_allowed = 0; |
488 pixel_comparator_.reset(new FuzzyPixelComparator( | 478 pixel_comparator_.reset(new FuzzyPixelComparator( |
489 true, // discard_alpha | 479 true, // discard_alpha |
490 percentage_pixels_large_error, | 480 percentage_pixels_large_error, |
491 percentage_pixels_small_error, | 481 percentage_pixels_small_error, |
492 average_error_allowed_in_bad_pixels, | 482 average_error_allowed_in_bad_pixels, |
493 large_error_allowed, | 483 large_error_allowed, |
494 small_error_allowed)); | 484 small_error_allowed)); |
495 | 485 |
496 RunPixelResourceTest(background, | 486 RunPixelResourceTest(background, |
497 base::FilePath( | 487 base::FilePath( |
498 FILE_PATH_LITERAL("mask_of_layer_with_blend.png"))); | 488 FILE_PATH_LITERAL("mask_of_layer_with_blend.png"))); |
499 } | 489 } |
500 | 490 |
501 } // namespace | 491 } // namespace |
502 } // namespace cc | 492 } // namespace cc |
503 | 493 |
504 #endif // !defined(OS_ANDROID) | 494 #endif // !defined(OS_ANDROID) |
OLD | NEW |