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

Side by Side Diff: cc/layers/nine_patch_layer_impl.cc

Issue 576173003: cc: Move UnoccludedContentRect to Occlusion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698