OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/nine_patch_layer_impl.h" | 5 #include "cc/layers/nine_patch_layer_impl.h" |
6 | 6 |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/quads/texture_draw_quad.h" | 10 #include "cc/quads/texture_draw_quad.h" |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 uv_top_left.bottom(), | 206 uv_top_left.bottom(), |
207 uv_top.width(), | 207 uv_top.width(), |
208 uv_left.height()); | 208 uv_left.height()); |
209 | 209 |
210 // Nothing is opaque here. | 210 // Nothing is opaque here. |
211 // TODO(danakj): Should we look at the SkBitmaps to determine opaqueness? | 211 // TODO(danakj): Should we look at the SkBitmaps to determine opaqueness? |
212 gfx::Rect opaque_rect; | 212 gfx::Rect opaque_rect; |
213 gfx::Rect visible_rect; | 213 gfx::Rect visible_rect; |
214 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 214 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
215 | 215 |
216 visible_rect = | 216 Occlusion occlusion = |
217 occlusion_tracker.UnoccludedContentRect(layer_top_left, draw_transform()); | 217 occlusion_tracker.GetCurrentOcclusionForLayer(draw_transform()); |
| 218 |
| 219 visible_rect = occlusion.GetUnoccludedContentRect(layer_top_left); |
218 if (!visible_rect.IsEmpty()) { | 220 if (!visible_rect.IsEmpty()) { |
219 TextureDrawQuad* quad = | 221 TextureDrawQuad* quad = |
220 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 222 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
221 quad->SetNew(shared_quad_state, | 223 quad->SetNew(shared_quad_state, |
222 layer_top_left, | 224 layer_top_left, |
223 opaque_rect, | 225 opaque_rect, |
224 visible_rect, | 226 visible_rect, |
225 resource, | 227 resource, |
226 premultiplied_alpha, | 228 premultiplied_alpha, |
227 uv_top_left.origin(), | 229 uv_top_left.origin(), |
228 uv_top_left.bottom_right(), | 230 uv_top_left.bottom_right(), |
229 SK_ColorTRANSPARENT, | 231 SK_ColorTRANSPARENT, |
230 vertex_opacity, | 232 vertex_opacity, |
231 flipped); | 233 flipped); |
232 } | 234 } |
233 | 235 |
234 visible_rect = occlusion_tracker.UnoccludedContentRect(layer_top_right, | 236 visible_rect = occlusion.GetUnoccludedContentRect(layer_top_right); |
235 draw_transform()); | |
236 if (!visible_rect.IsEmpty()) { | 237 if (!visible_rect.IsEmpty()) { |
237 TextureDrawQuad* quad = | 238 TextureDrawQuad* quad = |
238 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 239 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
239 quad->SetNew(shared_quad_state, | 240 quad->SetNew(shared_quad_state, |
240 layer_top_right, | 241 layer_top_right, |
241 opaque_rect, | 242 opaque_rect, |
242 visible_rect, | 243 visible_rect, |
243 resource, | 244 resource, |
244 premultiplied_alpha, | 245 premultiplied_alpha, |
245 uv_top_right.origin(), | 246 uv_top_right.origin(), |
246 uv_top_right.bottom_right(), | 247 uv_top_right.bottom_right(), |
247 SK_ColorTRANSPARENT, | 248 SK_ColorTRANSPARENT, |
248 vertex_opacity, | 249 vertex_opacity, |
249 flipped); | 250 flipped); |
250 } | 251 } |
251 | 252 |
252 visible_rect = occlusion_tracker.UnoccludedContentRect(layer_bottom_left, | 253 visible_rect = occlusion.GetUnoccludedContentRect(layer_bottom_left); |
253 draw_transform()); | |
254 if (!visible_rect.IsEmpty()) { | 254 if (!visible_rect.IsEmpty()) { |
255 TextureDrawQuad* quad = | 255 TextureDrawQuad* quad = |
256 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 256 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
257 quad->SetNew(shared_quad_state, | 257 quad->SetNew(shared_quad_state, |
258 layer_bottom_left, | 258 layer_bottom_left, |
259 opaque_rect, | 259 opaque_rect, |
260 visible_rect, | 260 visible_rect, |
261 resource, | 261 resource, |
262 premultiplied_alpha, | 262 premultiplied_alpha, |
263 uv_bottom_left.origin(), | 263 uv_bottom_left.origin(), |
264 uv_bottom_left.bottom_right(), | 264 uv_bottom_left.bottom_right(), |
265 SK_ColorTRANSPARENT, | 265 SK_ColorTRANSPARENT, |
266 vertex_opacity, | 266 vertex_opacity, |
267 flipped); | 267 flipped); |
268 } | 268 } |
269 | 269 |
270 visible_rect = occlusion_tracker.UnoccludedContentRect(layer_bottom_right, | 270 visible_rect = occlusion.GetUnoccludedContentRect(layer_bottom_right); |
271 draw_transform()); | |
272 if (!visible_rect.IsEmpty()) { | 271 if (!visible_rect.IsEmpty()) { |
273 TextureDrawQuad* quad = | 272 TextureDrawQuad* quad = |
274 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 273 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
275 quad->SetNew(shared_quad_state, | 274 quad->SetNew(shared_quad_state, |
276 layer_bottom_right, | 275 layer_bottom_right, |
277 opaque_rect, | 276 opaque_rect, |
278 visible_rect, | 277 visible_rect, |
279 resource, | 278 resource, |
280 premultiplied_alpha, | 279 premultiplied_alpha, |
281 uv_bottom_right.origin(), | 280 uv_bottom_right.origin(), |
282 uv_bottom_right.bottom_right(), | 281 uv_bottom_right.bottom_right(), |
283 SK_ColorTRANSPARENT, | 282 SK_ColorTRANSPARENT, |
284 vertex_opacity, | 283 vertex_opacity, |
285 flipped); | 284 flipped); |
286 } | 285 } |
287 | 286 |
288 visible_rect = | 287 visible_rect = occlusion.GetUnoccludedContentRect(layer_top); |
289 occlusion_tracker.UnoccludedContentRect(layer_top, draw_transform()); | |
290 if (!visible_rect.IsEmpty()) { | 288 if (!visible_rect.IsEmpty()) { |
291 TextureDrawQuad* quad = | 289 TextureDrawQuad* quad = |
292 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 290 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
293 quad->SetNew(shared_quad_state, | 291 quad->SetNew(shared_quad_state, |
294 layer_top, | 292 layer_top, |
295 opaque_rect, | 293 opaque_rect, |
296 visible_rect, | 294 visible_rect, |
297 resource, | 295 resource, |
298 premultiplied_alpha, | 296 premultiplied_alpha, |
299 uv_top.origin(), | 297 uv_top.origin(), |
300 uv_top.bottom_right(), | 298 uv_top.bottom_right(), |
301 SK_ColorTRANSPARENT, | 299 SK_ColorTRANSPARENT, |
302 vertex_opacity, | 300 vertex_opacity, |
303 flipped); | 301 flipped); |
304 } | 302 } |
305 | 303 |
306 visible_rect = | 304 visible_rect = occlusion.GetUnoccludedContentRect(layer_left); |
307 occlusion_tracker.UnoccludedContentRect(layer_left, draw_transform()); | |
308 if (!visible_rect.IsEmpty()) { | 305 if (!visible_rect.IsEmpty()) { |
309 TextureDrawQuad* quad = | 306 TextureDrawQuad* quad = |
310 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 307 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
311 quad->SetNew(shared_quad_state, | 308 quad->SetNew(shared_quad_state, |
312 layer_left, | 309 layer_left, |
313 opaque_rect, | 310 opaque_rect, |
314 visible_rect, | 311 visible_rect, |
315 resource, | 312 resource, |
316 premultiplied_alpha, | 313 premultiplied_alpha, |
317 uv_left.origin(), | 314 uv_left.origin(), |
318 uv_left.bottom_right(), | 315 uv_left.bottom_right(), |
319 SK_ColorTRANSPARENT, | 316 SK_ColorTRANSPARENT, |
320 vertex_opacity, | 317 vertex_opacity, |
321 flipped); | 318 flipped); |
322 } | 319 } |
323 | 320 |
324 visible_rect = | 321 visible_rect = occlusion.GetUnoccludedContentRect(layer_right); |
325 occlusion_tracker.UnoccludedContentRect(layer_right, draw_transform()); | |
326 if (!visible_rect.IsEmpty()) { | 322 if (!visible_rect.IsEmpty()) { |
327 TextureDrawQuad* quad = | 323 TextureDrawQuad* quad = |
328 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 324 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
329 quad->SetNew(shared_quad_state, | 325 quad->SetNew(shared_quad_state, |
330 layer_right, | 326 layer_right, |
331 opaque_rect, | 327 opaque_rect, |
332 layer_right, | 328 layer_right, |
333 resource, | 329 resource, |
334 premultiplied_alpha, | 330 premultiplied_alpha, |
335 uv_right.origin(), | 331 uv_right.origin(), |
336 uv_right.bottom_right(), | 332 uv_right.bottom_right(), |
337 SK_ColorTRANSPARENT, | 333 SK_ColorTRANSPARENT, |
338 vertex_opacity, | 334 vertex_opacity, |
339 flipped); | 335 flipped); |
340 } | 336 } |
341 | 337 |
342 visible_rect = | 338 visible_rect = occlusion.GetUnoccludedContentRect(layer_bottom); |
343 occlusion_tracker.UnoccludedContentRect(layer_bottom, draw_transform()); | |
344 if (!visible_rect.IsEmpty()) { | 339 if (!visible_rect.IsEmpty()) { |
345 TextureDrawQuad* quad = | 340 TextureDrawQuad* quad = |
346 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 341 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
347 quad->SetNew(shared_quad_state, | 342 quad->SetNew(shared_quad_state, |
348 layer_bottom, | 343 layer_bottom, |
349 opaque_rect, | 344 opaque_rect, |
350 visible_rect, | 345 visible_rect, |
351 resource, | 346 resource, |
352 premultiplied_alpha, | 347 premultiplied_alpha, |
353 uv_bottom.origin(), | 348 uv_bottom.origin(), |
354 uv_bottom.bottom_right(), | 349 uv_bottom.bottom_right(), |
355 SK_ColorTRANSPARENT, | 350 SK_ColorTRANSPARENT, |
356 vertex_opacity, | 351 vertex_opacity, |
357 flipped); | 352 flipped); |
358 } | 353 } |
359 | 354 |
360 if (fill_center_) { | 355 if (fill_center_) { |
361 visible_rect = | 356 visible_rect = occlusion.GetUnoccludedContentRect(layer_center); |
362 occlusion_tracker.UnoccludedContentRect(layer_center, draw_transform()); | |
363 if (!visible_rect.IsEmpty()) { | 357 if (!visible_rect.IsEmpty()) { |
364 TextureDrawQuad* quad = | 358 TextureDrawQuad* quad = |
365 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 359 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
366 quad->SetNew(shared_quad_state, | 360 quad->SetNew(shared_quad_state, |
367 layer_center, | 361 layer_center, |
368 opaque_rect, | 362 opaque_rect, |
369 visible_rect, | 363 visible_rect, |
370 resource, | 364 resource, |
371 premultiplied_alpha, | 365 premultiplied_alpha, |
372 uv_center.origin(), | 366 uv_center.origin(), |
(...skipping 25 matching lines...) Expand all Loading... |
398 result->Set("ImageBounds", list); | 392 result->Set("ImageBounds", list); |
399 | 393 |
400 result->Set("Border", MathUtil::AsValue(border_).release()); | 394 result->Set("Border", MathUtil::AsValue(border_).release()); |
401 | 395 |
402 result->SetBoolean("FillCenter", fill_center_); | 396 result->SetBoolean("FillCenter", fill_center_); |
403 | 397 |
404 return result; | 398 return result; |
405 } | 399 } |
406 | 400 |
407 } // namespace cc | 401 } // namespace cc |
OLD | NEW |