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

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

Issue 2655233006: cc : Clean up cc clip tree (Closed)
Patch Set: rebase Created 3 years, 9 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 | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 1933 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 .combined_maximum_animation_target_scale = maximum_animation_scale; 1944 .combined_maximum_animation_target_scale = maximum_animation_scale;
1945 cached_data_.animation_scales[transform_id] 1945 cached_data_.animation_scales[transform_id]
1946 .combined_starting_animation_scale = starting_animation_scale; 1946 .combined_starting_animation_scale = starting_animation_scale;
1947 cached_data_.animation_scales[transform_id].update_number = 1947 cached_data_.animation_scales[transform_id].update_number =
1948 cached_data_.transform_tree_update_number; 1948 cached_data_.transform_tree_update_number;
1949 } 1949 }
1950 1950
1951 bool PropertyTrees::GetToTarget(int transform_id, 1951 bool PropertyTrees::GetToTarget(int transform_id,
1952 int effect_id, 1952 int effect_id,
1953 gfx::Transform* to_target) const { 1953 gfx::Transform* to_target) const {
1954 if (effect_id == EffectTree::kContentsRootNodeId) {
1955 *to_target = transform_tree.ToScreen(transform_id);
1956 return true;
1957 }
1954 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id); 1958 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id);
1955 if (transforms.to_valid) { 1959 if (transforms.to_valid) {
1956 *to_target = transforms.to_target; 1960 *to_target = transforms.to_target;
1957 return true; 1961 return true;
1958 } else if (!transforms.might_be_invertible) { 1962 } else if (!transforms.might_be_invertible) {
1959 return false; 1963 return false;
1960 } else { 1964 } else {
1961 transforms.might_be_invertible = 1965 transforms.might_be_invertible =
1962 transforms.from_target.GetInverse(to_target); 1966 transforms.from_target.GetInverse(to_target);
1963 transforms.to_valid = transforms.might_be_invertible; 1967 transforms.to_valid = transforms.might_be_invertible;
1964 transforms.to_target = *to_target; 1968 transforms.to_target = *to_target;
1965 return transforms.to_valid; 1969 return transforms.to_valid;
1966 } 1970 }
1967 } 1971 }
1968 1972
1969 bool PropertyTrees::GetFromTarget(int transform_id, 1973 bool PropertyTrees::GetFromTarget(int transform_id,
1970 int effect_id, 1974 int effect_id,
1971 gfx::Transform* from_target) const { 1975 gfx::Transform* from_target) const {
1976 const TransformNode* node = transform_tree.Node(transform_id);
1977 if (node->ancestors_are_invertible &&
1978 effect_id == EffectTree::kContentsRootNodeId) {
1979 *from_target = transform_tree.FromScreen(transform_id);
1980 return true;
1981 }
1972 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id); 1982 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id);
1973 if (transforms.from_valid) { 1983 if (transforms.from_valid) {
1974 *from_target = transforms.from_target; 1984 *from_target = transforms.from_target;
1975 return true; 1985 return true;
1976 } else if (!transforms.might_be_invertible) { 1986 } else if (!transforms.might_be_invertible) {
1977 return false; 1987 return false;
1978 } else { 1988 } else {
1979 transforms.might_be_invertible = 1989 transforms.might_be_invertible =
1980 transforms.to_target.GetInverse(from_target); 1990 transforms.to_target.GetInverse(from_target);
1981 transforms.from_valid = transforms.might_be_invertible; 1991 transforms.from_valid = transforms.might_be_invertible;
(...skipping 15 matching lines...) Expand all
1997 } 2007 }
1998 } 2008 }
1999 // Add an entry to the cache. 2009 // Add an entry to the cache.
2000 cached_data_.draw_transforms[transform_id].push_back(DrawTransformData()); 2010 cached_data_.draw_transforms[transform_id].push_back(DrawTransformData());
2001 DrawTransformData& data = cached_data_.draw_transforms[transform_id].back(); 2011 DrawTransformData& data = cached_data_.draw_transforms[transform_id].back();
2002 data.update_number = -1; 2012 data.update_number = -1;
2003 data.target_id = dest_id; 2013 data.target_id = dest_id;
2004 return data; 2014 return data;
2005 } 2015 }
2006 2016
2017 ClipRectData* PropertyTrees::FetchClipRectFromCache(int clip_id,
2018 int target_id) {
2019 ClipNode* clip_node = clip_tree.Node(clip_id);
2020 for (auto& data : clip_node->cached_clip_rects) {
2021 if (data.target_id == target_id || data.target_id == -1)
2022 return &data;
2023 }
2024 clip_node->cached_clip_rects.push_back(ClipRectData());
2025 return &clip_node->cached_clip_rects.back();
2026 }
2027
2007 DrawTransforms& PropertyTrees::GetDrawTransforms(int transform_id, 2028 DrawTransforms& PropertyTrees::GetDrawTransforms(int transform_id,
2008 int effect_id) const { 2029 int effect_id) const {
2009 const EffectNode* effect_node = effect_tree.Node(effect_id); 2030 const EffectNode* effect_node = effect_tree.Node(effect_id);
2010 int dest_id = effect_node->transform_id; 2031 int dest_id = effect_node->transform_id;
2011 2032
2012 DrawTransformData& data = 2033 DrawTransformData& data =
2013 FetchDrawTransformsDataFromCache(transform_id, dest_id); 2034 FetchDrawTransformsDataFromCache(transform_id, dest_id);
2014 2035
2015 DCHECK(data.update_number != cached_data_.transform_tree_update_number || 2036 DCHECK(data.update_number != cached_data_.transform_tree_update_number ||
2016 data.target_id != EffectTree::kInvalidNodeId); 2037 data.target_id != EffectTree::kInvalidNodeId);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2082 const EffectNode* effect_node = effect_tree.Node(effect_id); 2103 const EffectNode* effect_node = effect_tree.Node(effect_id);
2083 2104
2084 if (effect_node->surface_contents_scale.x() != 0.0 && 2105 if (effect_node->surface_contents_scale.x() != 0.0 &&
2085 effect_node->surface_contents_scale.y() != 0.0) 2106 effect_node->surface_contents_scale.y() != 0.0)
2086 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2107 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2087 1.0 / effect_node->surface_contents_scale.y()); 2108 1.0 / effect_node->surface_contents_scale.y());
2088 return screen_space_transform; 2109 return screen_space_transform;
2089 } 2110 }
2090 2111
2091 } // namespace cc 2112 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698