| 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 |