| 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 <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |