| 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 <set> | 5 #include <set> |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
| 9 #include "cc/trees/property_tree.h" | 9 #include "cc/trees/property_tree.h" |
| 10 | 10 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 template class PropertyTree<OpacityNode>; | 36 template class PropertyTree<OpacityNode>; |
| 37 | 37 |
| 38 TransformNodeData::TransformNodeData() | 38 TransformNodeData::TransformNodeData() |
| 39 : target_id(-1), | 39 : target_id(-1), |
| 40 content_target_id(-1), | 40 content_target_id(-1), |
| 41 needs_local_transform_update(true), | 41 needs_local_transform_update(true), |
| 42 is_invertible(true), | 42 is_invertible(true), |
| 43 ancestors_are_invertible(true), | 43 ancestors_are_invertible(true), |
| 44 is_animated(false), | 44 is_animated(false), |
| 45 to_screen_is_animated(false), | 45 to_screen_is_animated(false), |
| 46 flattens(false), | 46 flattens_inherited_transform(false), |
| 47 flattens_local_transform(false), |
| 47 scrolls(false), | 48 scrolls(false), |
| 48 needs_sublayer_scale(false), | 49 needs_sublayer_scale(false), |
| 49 layer_scale_factor(1.0f) { | 50 layer_scale_factor(1.0f) { |
| 50 } | 51 } |
| 51 | 52 |
| 52 TransformNodeData::~TransformNodeData() { | 53 TransformNodeData::~TransformNodeData() { |
| 53 } | 54 } |
| 54 | 55 |
| 55 ClipNodeData::ClipNodeData() : transform_id(-1), target_id(-1) { | 56 ClipNodeData::ClipNodeData() : transform_id(-1), target_id(-1) { |
| 56 } | 57 } |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 node->data.needs_local_transform_update = false; | 184 node->data.needs_local_transform_update = false; |
| 184 } | 185 } |
| 185 | 186 |
| 186 void TransformTree::UpdateScreenSpaceTransform(TransformNode* node, | 187 void TransformTree::UpdateScreenSpaceTransform(TransformNode* node, |
| 187 TransformNode* parent_node, | 188 TransformNode* parent_node, |
| 188 TransformNode* target_node) { | 189 TransformNode* target_node) { |
| 189 if (!parent_node) { | 190 if (!parent_node) { |
| 190 node->data.to_screen = node->data.to_parent; | 191 node->data.to_screen = node->data.to_parent; |
| 191 node->data.ancestors_are_invertible = true; | 192 node->data.ancestors_are_invertible = true; |
| 192 node->data.to_screen_is_animated = false; | 193 node->data.to_screen_is_animated = false; |
| 193 } else if (parent_node->data.flattens) { | 194 } else if (parent_node->data.flattens_local_transform || |
| 195 node->data.flattens_inherited_transform) { |
| 194 // Flattening is tricky. Once a layer is drawn into its render target, it | 196 // Flattening is tricky. Once a layer is drawn into its render target, it |
| 195 // cannot escape, so we only need to consider transforms between the layer | 197 // cannot escape, so we only need to consider transforms between the layer |
| 196 // and its target when flattening (i.e., its draw transform). To compute the | 198 // and its target when flattening (i.e., its draw transform). To compute the |
| 197 // screen space transform when flattening is involved we combine three | 199 // screen space transform when flattening is involved we combine three |
| 198 // transforms, A * B * C, where A is the screen space transform of the | 200 // transforms, A * B * C, where A is the screen space transform of the |
| 199 // target, B is the flattened draw transform of the layer's parent, and C is | 201 // target, B is the flattened draw transform of the layer's parent, and C is |
| 200 // the local transform. | 202 // the local transform. |
| 201 node->data.to_screen = target_node->data.to_screen; | 203 node->data.to_screen = target_node->data.to_screen; |
| 202 gfx::Transform flattened; | 204 gfx::Transform flattened; |
| 203 ComputeTransform(parent_node->id, target_node->id, &flattened); | 205 ComputeTransform(parent_node->id, target_node->id, &flattened); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 // combined, to/from matrices. | 288 // combined, to/from matrices. |
| 287 node->data.to_parent.PreconcatTransform(delta); | 289 node->data.to_parent.PreconcatTransform(delta); |
| 288 node->data.from_parent.ConcatTransform(inverse_delta); | 290 node->data.from_parent.ConcatTransform(inverse_delta); |
| 289 node->data.to_target.PreconcatTransform(delta); | 291 node->data.to_target.PreconcatTransform(delta); |
| 290 node->data.from_target.ConcatTransform(inverse_delta); | 292 node->data.from_target.ConcatTransform(inverse_delta); |
| 291 node->data.to_screen.PreconcatTransform(delta); | 293 node->data.to_screen.PreconcatTransform(delta); |
| 292 node->data.from_screen.ConcatTransform(inverse_delta); | 294 node->data.from_screen.ConcatTransform(inverse_delta); |
| 293 } | 295 } |
| 294 | 296 |
| 295 } // namespace cc | 297 } // namespace cc |
| OLD | NEW |