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

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 2653183008: cc : Remove usage of combined_clip_in_target_space during hit testing. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698