OLD | NEW |
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/trees/property_tree_builder.h" | 5 #include "cc/trees/property_tree_builder.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 // to continue to propagate. | 393 // to continue to propagate. |
394 layers_are_clipped = apply_ancestor_clip; | 394 layers_are_clipped = apply_ancestor_clip; |
395 } | 395 } |
396 | 396 |
397 bool layer_clips_subtree = LayerClipsSubtree(layer); | 397 bool layer_clips_subtree = LayerClipsSubtree(layer); |
398 if (layer_clips_subtree) { | 398 if (layer_clips_subtree) { |
399 layers_are_clipped = true; | 399 layers_are_clipped = true; |
400 data_for_children->apply_ancestor_clip = true; | 400 data_for_children->apply_ancestor_clip = true; |
401 } | 401 } |
402 | 402 |
403 // Without surfaces, all non-viewport clips have to be applied using layer | |
404 // clipping. | |
405 bool layers_are_clipped_when_surfaces_disabled = | |
406 layer_clips_subtree || parent->layers_are_clipped_when_surfaces_disabled; | |
407 | |
408 // Render surface's clip is needed during hit testing. So, we need to create | 403 // Render surface's clip is needed during hit testing. So, we need to create |
409 // a clip node for every render surface. | 404 // a clip node for every render surface. |
410 bool requires_node = layer_clips_subtree || created_render_surface; | 405 bool requires_node = layer_clips_subtree || created_render_surface; |
411 | 406 |
412 if (!requires_node) { | 407 if (!requires_node) { |
413 data_for_children->clip_tree_parent = parent_id; | 408 data_for_children->clip_tree_parent = parent_id; |
414 DCHECK_EQ(layers_are_clipped, parent->layers_are_clipped); | 409 DCHECK_EQ(layers_are_clipped, parent->layers_are_clipped); |
415 DCHECK_EQ(layers_are_clipped_when_surfaces_disabled, | |
416 parent->layers_are_clipped_when_surfaces_disabled); | |
417 } else { | 410 } else { |
418 LayerType* transform_parent = data_for_children->transform_tree_parent; | 411 LayerType* transform_parent = data_for_children->transform_tree_parent; |
419 if (PositionConstraint(layer).is_fixed_position() && | 412 if (PositionConstraint(layer).is_fixed_position() && |
420 !created_transform_node) { | 413 !created_transform_node) { |
421 transform_parent = data_for_children->transform_fixed_parent; | 414 transform_parent = data_for_children->transform_fixed_parent; |
422 } | 415 } |
423 ClipNode node; | 416 ClipNode node; |
424 node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), | 417 node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), |
425 gfx::SizeF(layer->bounds())); | 418 gfx::SizeF(layer->bounds())); |
426 node.transform_id = transform_parent->transform_tree_index(); | 419 node.transform_id = transform_parent->transform_tree_index(); |
(...skipping 19 matching lines...) Expand all Loading... |
446 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; | 439 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; |
447 } else if (Filters(layer).HasFilterThatMovesPixels()) { | 440 } else if (Filters(layer).HasFilterThatMovesPixels()) { |
448 node.clip_type = ClipNode::ClipType::EXPANDS_CLIP; | 441 node.clip_type = ClipNode::ClipType::EXPANDS_CLIP; |
449 node.clip_expander = | 442 node.clip_expander = |
450 base::MakeUnique<ClipExpander>(layer->effect_tree_index()); | 443 base::MakeUnique<ClipExpander>(layer->effect_tree_index()); |
451 } else { | 444 } else { |
452 node.clip_type = ClipNode::ClipType::NONE; | 445 node.clip_type = ClipNode::ClipType::NONE; |
453 } | 446 } |
454 node.resets_clip = has_unclipped_surface; | 447 node.resets_clip = has_unclipped_surface; |
455 node.layers_are_clipped = layers_are_clipped; | 448 node.layers_are_clipped = layers_are_clipped; |
456 node.layers_are_clipped_when_surfaces_disabled = | |
457 layers_are_clipped_when_surfaces_disabled; | |
458 | 449 |
459 data_for_children->clip_tree_parent = | 450 data_for_children->clip_tree_parent = |
460 data_for_children->property_trees->clip_tree.Insert(node, parent_id); | 451 data_for_children->property_trees->clip_tree.Insert(node, parent_id); |
461 data_for_children->property_trees | 452 data_for_children->property_trees |
462 ->layer_id_to_clip_node_index[layer->id()] = | 453 ->layer_id_to_clip_node_index[layer->id()] = |
463 data_for_children->clip_tree_parent; | 454 data_for_children->clip_tree_parent; |
464 } | 455 } |
465 | 456 |
466 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); | 457 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); |
467 } | 458 } |
(...skipping 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1543 color = SkColorSetA(color, 255); | 1534 color = SkColorSetA(color, 255); |
1544 BuildPropertyTreesTopLevelInternal( | 1535 BuildPropertyTreesTopLevelInternal( |
1545 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1536 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1546 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1537 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1547 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1538 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1548 device_transform, property_trees, color); | 1539 device_transform, property_trees, color); |
1549 property_trees->ResetCachedData(); | 1540 property_trees->ResetCachedData(); |
1550 } | 1541 } |
1551 | 1542 |
1552 } // namespace cc | 1543 } // namespace cc |
OLD | NEW |