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 "cc/trees/property_tree_builder.h" | 5 #include "cc/trees/property_tree_builder.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 layer->set_transform_tree_index(transform_parent->transform_tree_index()); | 164 layer->set_transform_tree_index(transform_parent->transform_tree_index()); |
165 return; | 165 return; |
166 } | 166 } |
167 | 167 |
168 if (!is_root) { | 168 if (!is_root) { |
169 data_for_children->transform_tree->Insert( | 169 data_for_children->transform_tree->Insert( |
170 TransformNode(), transform_parent->transform_tree_index()); | 170 TransformNode(), transform_parent->transform_tree_index()); |
171 } | 171 } |
172 | 172 |
173 TransformNode* node = data_for_children->transform_tree->back(); | 173 TransformNode* node = data_for_children->transform_tree->back(); |
| 174 layer->set_transform_tree_index(node->id); |
174 | 175 |
175 node->data.flattens = layer->should_flatten_transform(); | 176 node->data.flattens = layer->should_flatten_transform(); |
176 node->data.target_id = | 177 node->data.target_id = |
177 data_from_ancestor.render_target->transform_tree_index(); | 178 data_from_ancestor.render_target->transform_tree_index(); |
| 179 DCHECK_NE(node->data.target_id, -1); |
178 node->data.is_animated = layer->TransformIsAnimating(); | 180 node->data.is_animated = layer->TransformIsAnimating(); |
179 | 181 |
180 gfx::Transform transform; | 182 gfx::Transform transform; |
181 float device_and_page_scale_factors = 1.0f; | 183 float device_and_page_scale_factors = 1.0f; |
182 if (is_root) | 184 if (is_root) |
183 device_and_page_scale_factors = data_from_ancestor.device_scale_factor; | 185 device_and_page_scale_factors = data_from_ancestor.device_scale_factor; |
184 if (is_page_scale_application_layer) | 186 if (is_page_scale_application_layer) |
185 device_and_page_scale_factors *= data_from_ancestor.page_scale_factor; | 187 device_and_page_scale_factors *= data_from_ancestor.page_scale_factor; |
186 | 188 |
187 transform.Scale(device_and_page_scale_factors, device_and_page_scale_factors); | 189 transform.Scale(device_and_page_scale_factors, device_and_page_scale_factors); |
(...skipping 19 matching lines...) Expand all Loading... |
207 transform.Translate3d(-layer->transform_origin().x(), | 209 transform.Translate3d(-layer->transform_origin().x(), |
208 -layer->transform_origin().y(), | 210 -layer->transform_origin().y(), |
209 -layer->transform_origin().z()); | 211 -layer->transform_origin().z()); |
210 | 212 |
211 node->data.to_parent = transform; | 213 node->data.to_parent = transform; |
212 node->data.is_invertible = transform.GetInverse(&node->data.from_parent); | 214 node->data.is_invertible = transform.GetInverse(&node->data.from_parent); |
213 | 215 |
214 data_from_ancestor.transform_tree->UpdateScreenSpaceTransform(node->id); | 216 data_from_ancestor.transform_tree->UpdateScreenSpaceTransform(node->id); |
215 | 217 |
216 layer->set_offset_to_transform_parent(gfx::Vector2dF()); | 218 layer->set_offset_to_transform_parent(gfx::Vector2dF()); |
217 layer->set_transform_tree_index(node->id); | |
218 } | 219 } |
219 | 220 |
220 void BuildPropertyTreesInternal(Layer* layer, | 221 void BuildPropertyTreesInternal(Layer* layer, |
221 const DataForRecursion& data_from_parent) { | 222 const DataForRecursion& data_from_parent) { |
222 DataForRecursion data_for_children(data_from_parent); | 223 DataForRecursion data_for_children(data_from_parent); |
223 if (layer->render_surface()) | 224 if (layer->render_surface()) |
224 data_for_children.render_target = layer; | 225 data_for_children.render_target = layer; |
225 | 226 |
226 AddTransformNodeIfNeeded(data_from_parent, layer, &data_for_children); | 227 AddTransformNodeIfNeeded(data_from_parent, layer, &data_for_children); |
227 AddClipNodeIfNeeded(data_from_parent, layer, &data_for_children); | 228 AddClipNodeIfNeeded(data_from_parent, layer, &data_for_children); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 data_for_recursion.clip_tree_parent = clip_tree->Insert(root_clip, 0); | 272 data_for_recursion.clip_tree_parent = clip_tree->Insert(root_clip, 0); |
272 | 273 |
273 BuildPropertyTreesInternal(root_layer, data_for_recursion); | 274 BuildPropertyTreesInternal(root_layer, data_for_recursion); |
274 | 275 |
275 TransformNode* transform_root = transform_tree->Node(transform_root_id); | 276 TransformNode* transform_root = transform_tree->Node(transform_root_id); |
276 transform_root->data.set_to_parent(device_transform * | 277 transform_root->data.set_to_parent(device_transform * |
277 transform_root->data.to_parent); | 278 transform_root->data.to_parent); |
278 } | 279 } |
279 | 280 |
280 } // namespace cc | 281 } // namespace cc |
OLD | NEW |