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

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

Issue 2632313002: cc: Compute RenderSurfaceImpl's TransformTreeIndex using its effect node (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 | « cc/trees/draw_property_utils.cc ('k') | 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 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 template <typename T> 43 template <typename T>
44 PropertyTree<T>& PropertyTree<T>::operator=(const PropertyTree<T>&) = default; 44 PropertyTree<T>& PropertyTree<T>::operator=(const PropertyTree<T>&) = default;
45 45
46 TransformTree::TransformTree() 46 TransformTree::TransformTree()
47 : source_to_parent_updates_allowed_(true), 47 : source_to_parent_updates_allowed_(true),
48 page_scale_factor_(1.f), 48 page_scale_factor_(1.f),
49 device_scale_factor_(1.f), 49 device_scale_factor_(1.f),
50 device_transform_scale_factor_(1.f) { 50 device_transform_scale_factor_(1.f) {
51 cached_data_.push_back(TransformCachedNodeData()); 51 cached_data_.push_back(TransformCachedNodeData());
52 cached_data_[kRootNodeId].target_id = kRootNodeId;
52 } 53 }
53 54
54 TransformTree::~TransformTree() = default; 55 TransformTree::~TransformTree() = default;
55 TransformTree& TransformTree::operator=(const TransformTree&) = default; 56 TransformTree& TransformTree::operator=(const TransformTree&) = default;
56 57
57 template <typename T> 58 template <typename T>
58 int PropertyTree<T>::Insert(const T& tree_node, int parent_id) { 59 int PropertyTree<T>::Insert(const T& tree_node, int parent_id) {
59 DCHECK_GT(nodes_.size(), 0u); 60 DCHECK_GT(nodes_.size(), 0u);
60 nodes_.push_back(tree_node); 61 nodes_.push_back(tree_node);
61 T& node = nodes_.back(); 62 T& node = nodes_.back();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 void TransformTree::clear() { 111 void TransformTree::clear() {
111 PropertyTree<TransformNode>::clear(); 112 PropertyTree<TransformNode>::clear();
112 113
113 page_scale_factor_ = 1.f; 114 page_scale_factor_ = 1.f;
114 device_scale_factor_ = 1.f; 115 device_scale_factor_ = 1.f;
115 device_transform_scale_factor_ = 1.f; 116 device_transform_scale_factor_ = 1.f;
116 nodes_affected_by_inner_viewport_bounds_delta_.clear(); 117 nodes_affected_by_inner_viewport_bounds_delta_.clear();
117 nodes_affected_by_outer_viewport_bounds_delta_.clear(); 118 nodes_affected_by_outer_viewport_bounds_delta_.clear();
118 cached_data_.clear(); 119 cached_data_.clear();
119 cached_data_.push_back(TransformCachedNodeData()); 120 cached_data_.push_back(TransformCachedNodeData());
121 cached_data_[kRootNodeId].target_id = kRootNodeId;
120 sticky_position_data_.clear(); 122 sticky_position_data_.clear();
121 123
122 #if DCHECK_IS_ON() 124 #if DCHECK_IS_ON()
123 TransformTree tree; 125 TransformTree tree;
124 // TODO(jaydasika) : Move tests that expect source_to_parent_updates_allowed 126 // TODO(jaydasika) : Move tests that expect source_to_parent_updates_allowed
125 // to be true on impl thread to main thread and set it to is_main_thread here. 127 // to be true on impl thread to main thread and set it to is_main_thread here.
126 tree.source_to_parent_updates_allowed_ = source_to_parent_updates_allowed_; 128 tree.source_to_parent_updates_allowed_ = source_to_parent_updates_allowed_;
127 DCHECK(tree == *this); 129 DCHECK(tree == *this);
128 #endif 130 #endif
129 } 131 }
(...skipping 1929 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 transform_tree.nodes().size(), std::vector<DrawTransformData>(1)); 2061 transform_tree.nodes().size(), std::vector<DrawTransformData>(1));
2060 } 2062 }
2061 2063
2062 void PropertyTrees::UpdateCachedNumber() { 2064 void PropertyTrees::UpdateCachedNumber() {
2063 cached_data_.property_tree_update_number++; 2065 cached_data_.property_tree_update_number++;
2064 } 2066 }
2065 2067
2066 gfx::Transform PropertyTrees::ToScreenSpaceTransformWithoutSurfaceContentsScale( 2068 gfx::Transform PropertyTrees::ToScreenSpaceTransformWithoutSurfaceContentsScale(
2067 int transform_id, 2069 int transform_id,
2068 int effect_id) const { 2070 int effect_id) const {
2069 DCHECK_GT(transform_id, 0); 2071 if (transform_id == TransformTree::kRootNodeId) {
2070 if (transform_id == 1) {
2071 return gfx::Transform(); 2072 return gfx::Transform();
2072 } 2073 }
2073 gfx::Transform screen_space_transform = transform_tree.ToScreen(transform_id); 2074 gfx::Transform screen_space_transform = transform_tree.ToScreen(transform_id);
2074 const EffectNode* effect_node = effect_tree.Node(effect_id); 2075 const EffectNode* effect_node = effect_tree.Node(effect_id);
2075 2076
2076 if (effect_node->surface_contents_scale.x() != 0.0 && 2077 if (effect_node->surface_contents_scale.x() != 0.0 &&
2077 effect_node->surface_contents_scale.y() != 0.0) 2078 effect_node->surface_contents_scale.y() != 0.0)
2078 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2079 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2079 1.0 / effect_node->surface_contents_scale.y()); 2080 1.0 / effect_node->surface_contents_scale.y());
2080 return screen_space_transform; 2081 return screen_space_transform;
2081 } 2082 }
2082 2083
2083 bool PropertyTrees::ComputeTransformFromTarget( 2084 bool PropertyTrees::ComputeTransformFromTarget(
2084 int transform_id, 2085 int transform_id,
2085 int effect_id, 2086 int effect_id,
2086 gfx::Transform* transform) const { 2087 gfx::Transform* transform) const {
2087 transform->MakeIdentity(); 2088 transform->MakeIdentity();
2088 if (transform_id == TransformTree::kInvalidNodeId) 2089 if (transform_id == TransformTree::kInvalidNodeId)
2089 return true; 2090 return true;
2090 2091
2091 const EffectNode* effect_node = effect_tree.Node(effect_id); 2092 const EffectNode* effect_node = effect_tree.Node(effect_id);
2092 2093
2093 bool success = GetFromTarget(transform_id, effect_id, transform); 2094 bool success = GetFromTarget(transform_id, effect_id, transform);
2094 transform->Scale(effect_node->surface_contents_scale.x(), 2095 transform->Scale(effect_node->surface_contents_scale.x(),
2095 effect_node->surface_contents_scale.y()); 2096 effect_node->surface_contents_scale.y());
2096 return success; 2097 return success;
2097 } 2098 }
2098 2099
2099 } // namespace cc 2100 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/draw_property_utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698