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

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

Issue 2655233006: cc : Clean up cc clip tree (Closed)
Patch Set: Address comments 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
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 1965 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 .combined_maximum_animation_target_scale = maximum_animation_scale; 1976 .combined_maximum_animation_target_scale = maximum_animation_scale;
1977 cached_data_.animation_scales[transform_id] 1977 cached_data_.animation_scales[transform_id]
1978 .combined_starting_animation_scale = starting_animation_scale; 1978 .combined_starting_animation_scale = starting_animation_scale;
1979 cached_data_.animation_scales[transform_id].update_number = 1979 cached_data_.animation_scales[transform_id].update_number =
1980 cached_data_.transform_tree_update_number; 1980 cached_data_.transform_tree_update_number;
1981 } 1981 }
1982 1982
1983 bool PropertyTrees::GetToTarget(int transform_id, 1983 bool PropertyTrees::GetToTarget(int transform_id,
1984 int effect_id, 1984 int effect_id,
1985 gfx::Transform* to_target) const { 1985 gfx::Transform* to_target) const {
1986 if (effect_id == EffectTree::kContentsRootNodeId) {
1987 *to_target = transform_tree.ToScreen(transform_id);
1988 return true;
1989 }
1986 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id); 1990 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id);
1987 if (transforms.to_valid) { 1991 if (transforms.to_valid) {
1988 *to_target = transforms.to_target; 1992 *to_target = transforms.to_target;
1989 return true; 1993 return true;
1990 } else if (!transforms.might_be_invertible) { 1994 } else if (!transforms.might_be_invertible) {
1991 return false; 1995 return false;
1992 } else { 1996 } else {
1993 transforms.might_be_invertible = 1997 transforms.might_be_invertible =
1994 transforms.from_target.GetInverse(to_target); 1998 transforms.from_target.GetInverse(to_target);
1995 transforms.to_valid = transforms.might_be_invertible; 1999 transforms.to_valid = transforms.might_be_invertible;
1996 transforms.to_target = *to_target; 2000 transforms.to_target = *to_target;
1997 return transforms.to_valid; 2001 return transforms.to_valid;
1998 } 2002 }
1999 } 2003 }
2000 2004
2001 bool PropertyTrees::GetFromTarget(int transform_id, 2005 bool PropertyTrees::GetFromTarget(int transform_id,
2002 int effect_id, 2006 int effect_id,
2003 gfx::Transform* from_target) const { 2007 gfx::Transform* from_target) const {
2008 const TransformNode* node = transform_tree.Node(transform_id);
2009 if (node->ancestors_are_invertible &&
2010 effect_id == EffectTree::kContentsRootNodeId) {
2011 *from_target = transform_tree.FromScreen(transform_id);
2012 return true;
2013 }
2004 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id); 2014 DrawTransforms& transforms = GetDrawTransforms(transform_id, effect_id);
2005 if (transforms.from_valid) { 2015 if (transforms.from_valid) {
2006 *from_target = transforms.from_target; 2016 *from_target = transforms.from_target;
2007 return true; 2017 return true;
2008 } else if (!transforms.might_be_invertible) { 2018 } else if (!transforms.might_be_invertible) {
2009 return false; 2019 return false;
2010 } else { 2020 } else {
2011 transforms.might_be_invertible = 2021 transforms.might_be_invertible =
2012 transforms.to_target.GetInverse(from_target); 2022 transforms.to_target.GetInverse(from_target);
2013 transforms.from_valid = transforms.might_be_invertible; 2023 transforms.from_valid = transforms.might_be_invertible;
(...skipping 15 matching lines...) Expand all
2029 } 2039 }
2030 } 2040 }
2031 // Add an entry to the cache. 2041 // Add an entry to the cache.
2032 cached_data_.draw_transforms[transform_id].push_back(DrawTransformData()); 2042 cached_data_.draw_transforms[transform_id].push_back(DrawTransformData());
2033 DrawTransformData& data = cached_data_.draw_transforms[transform_id].back(); 2043 DrawTransformData& data = cached_data_.draw_transforms[transform_id].back();
2034 data.update_number = -1; 2044 data.update_number = -1;
2035 data.target_id = dest_id; 2045 data.target_id = dest_id;
2036 return data; 2046 return data;
2037 } 2047 }
2038 2048
2049 ClipRectData* PropertyTrees::FetchClipRectFromCache(int clip_id,
2050 int target_id) {
2051 ClipNode* clip_node = clip_tree.Node(clip_id);
2052 for (auto& data : clip_node->cached_clip_rects) {
2053 if (data.target_id == target_id || data.target_id == -1)
2054 return &data;
2055 }
2056 clip_node->cached_clip_rects.push_back(ClipRectData());
2057 return &clip_node->cached_clip_rects.back();
2058 }
2059
2039 DrawTransforms& PropertyTrees::GetDrawTransforms(int transform_id, 2060 DrawTransforms& PropertyTrees::GetDrawTransforms(int transform_id,
2040 int effect_id) const { 2061 int effect_id) const {
2041 const EffectNode* effect_node = effect_tree.Node(effect_id); 2062 const EffectNode* effect_node = effect_tree.Node(effect_id);
2042 int dest_id = effect_node->transform_id; 2063 int dest_id = effect_node->transform_id;
2043 2064
2044 DrawTransformData& data = 2065 DrawTransformData& data =
2045 FetchDrawTransformsDataFromCache(transform_id, dest_id); 2066 FetchDrawTransformsDataFromCache(transform_id, dest_id);
2046 2067
2047 DCHECK(data.update_number != cached_data_.transform_tree_update_number || 2068 DCHECK(data.update_number != cached_data_.transform_tree_update_number ||
2048 data.target_id != EffectTree::kInvalidNodeId); 2069 data.target_id != EffectTree::kInvalidNodeId);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2114 const EffectNode* effect_node = effect_tree.Node(effect_id); 2135 const EffectNode* effect_node = effect_tree.Node(effect_id);
2115 2136
2116 if (effect_node->surface_contents_scale.x() != 0.0 && 2137 if (effect_node->surface_contents_scale.x() != 0.0 &&
2117 effect_node->surface_contents_scale.y() != 0.0) 2138 effect_node->surface_contents_scale.y() != 0.0)
2118 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2139 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2119 1.0 / effect_node->surface_contents_scale.y()); 2140 1.0 / effect_node->surface_contents_scale.y());
2120 return screen_space_transform; 2141 return screen_space_transform;
2121 } 2142 }
2122 2143
2123 } // namespace cc 2144 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698