| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layer_tree_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 1775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1786 // happen when we have transforms like rotation that inflate the combined | 1786 // happen when we have transforms like rotation that inflate the combined |
| 1787 // clip's bounds. Also, the point can be clipped by the content rect of an | 1787 // clip's bounds. Also, the point can be clipped by the content rect of an |
| 1788 // ancestor render surface. | 1788 // ancestor render surface. |
| 1789 | 1789 |
| 1790 // We first check if the point is clipped by viewport. | 1790 // We first check if the point is clipped by viewport. |
| 1791 const PropertyTrees* property_trees = | 1791 const PropertyTrees* property_trees = |
| 1792 layer->layer_tree_impl()->property_trees(); | 1792 layer->layer_tree_impl()->property_trees(); |
| 1793 const ClipTree& clip_tree = property_trees->clip_tree; | 1793 const ClipTree& clip_tree = property_trees->clip_tree; |
| 1794 const TransformTree& transform_tree = property_trees->transform_tree; | 1794 const TransformTree& transform_tree = property_trees->transform_tree; |
| 1795 const ClipNode* clip_node = clip_tree.Node(1); | 1795 const ClipNode* clip_node = clip_tree.Node(1); |
| 1796 gfx::Rect combined_clip_in_target_space = | 1796 gfx::Rect clip = gfx::ToEnclosingRect(clip_node->clip); |
| 1797 gfx::ToEnclosingRect(clip_node->combined_clip_in_target_space); | 1797 if (!PointHitsRect(screen_space_point, gfx::Transform(), clip, NULL)) |
| 1798 if (!PointHitsRect(screen_space_point, gfx::Transform(), | |
| 1799 combined_clip_in_target_space, NULL)) | |
| 1800 return true; | 1798 return true; |
| 1801 | 1799 |
| 1802 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); | 1800 for (const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); |
| 1803 clip_node->id > ClipTree::kViewportNodeId; | 1801 clip_node->id > ClipTree::kViewportNodeId; |
| 1804 clip_node = clip_tree.parent(clip_node)) { | 1802 clip_node = clip_tree.parent(clip_node)) { |
| 1805 if (clip_node->clip_type == ClipNode::ClipType::APPLIES_LOCAL_CLIP) { | 1803 if (clip_node->clip_type == ClipNode::ClipType::APPLIES_LOCAL_CLIP) { |
| 1806 const TransformNode* transform_node = | 1804 gfx::Rect clip = gfx::ToEnclosingRect(clip_node->clip); |
| 1807 transform_tree.Node(clip_node->target_transform_id); | |
| 1808 gfx::Rect combined_clip_in_target_space = | |
| 1809 gfx::ToEnclosingRect(clip_node->combined_clip_in_target_space); | |
| 1810 | 1805 |
| 1811 const LayerImpl* target_layer = | 1806 gfx::Transform screen_space_transform = |
| 1812 layer->layer_tree_impl()->LayerById(transform_node->owning_layer_id); | 1807 transform_tree.ToScreen(clip_node->transform_id); |
| 1813 DCHECK(transform_node->id == TransformTree::kRootNodeId || | 1808 if (!PointHitsRect(screen_space_point, screen_space_transform, clip, |
| 1814 target_layer->render_surface() || | 1809 NULL)) { |
| 1815 layer->layer_tree_impl()->is_in_resourceless_software_draw_mode()); | |
| 1816 gfx::Transform surface_screen_space_transform = | |
| 1817 transform_node->id == TransformTree::kRootNodeId || | |
| 1818 (layer->layer_tree_impl() | |
| 1819 ->is_in_resourceless_software_draw_mode()) | |
| 1820 ? gfx::Transform() | |
| 1821 : SurfaceScreenSpaceTransform(target_layer); | |
| 1822 if (!PointHitsRect(screen_space_point, surface_screen_space_transform, | |
| 1823 combined_clip_in_target_space, NULL)) { | |
| 1824 return true; | 1810 return true; |
| 1825 } | 1811 } |
| 1826 } | 1812 } |
| 1827 const LayerImpl* clip_node_owner = | 1813 const LayerImpl* clip_node_owner = |
| 1828 layer->layer_tree_impl()->LayerById(clip_node->owning_layer_id); | 1814 layer->layer_tree_impl()->LayerById(clip_node->owning_layer_id); |
| 1829 if (clip_node_owner->render_surface() && | 1815 if (clip_node_owner->render_surface() && |
| 1830 !PointHitsRect( | 1816 !PointHitsRect( |
| 1831 screen_space_point, SurfaceScreenSpaceTransform(clip_node_owner), | 1817 screen_space_point, SurfaceScreenSpaceTransform(clip_node_owner), |
| 1832 clip_node_owner->render_surface()->content_rect(), NULL)) { | 1818 clip_node_owner->render_surface()->content_rect(), NULL)) { |
| 1833 return true; | 1819 return true; |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2102 | 2088 |
| 2103 void LayerTreeImpl::ResetAllChangeTracking() { | 2089 void LayerTreeImpl::ResetAllChangeTracking() { |
| 2104 layers_that_should_push_properties_.clear(); | 2090 layers_that_should_push_properties_.clear(); |
| 2105 // Iterate over all layers, including masks. | 2091 // Iterate over all layers, including masks. |
| 2106 for (auto& layer : *layers_) | 2092 for (auto& layer : *layers_) |
| 2107 layer->ResetChangeTracking(); | 2093 layer->ResetChangeTracking(); |
| 2108 property_trees_.ResetAllChangeTracking(); | 2094 property_trees_.ResetAllChangeTracking(); |
| 2109 } | 2095 } |
| 2110 | 2096 |
| 2111 } // namespace cc | 2097 } // namespace cc |
| OLD | NEW |