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