| 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 #ifndef CC_TREES_PROPERTY_TREE_H_ | 5 #ifndef CC_TREES_PROPERTY_TREE_H_ |
| 6 #define CC_TREES_PROPERTY_TREE_H_ | 6 #define CC_TREES_PROPERTY_TREE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 | 161 |
| 162 // Computes the change of basis transform from node |source_id| to |dest_id|. | 162 // Computes the change of basis transform from node |source_id| to |dest_id|. |
| 163 // The function returns false iff the inverse of a singular transform was | 163 // The function returns false iff the inverse of a singular transform was |
| 164 // used (and the result should, therefore, not be trusted). Transforms may | 164 // used (and the result should, therefore, not be trusted). Transforms may |
| 165 // be computed between any pair of nodes that have an ancestor/descendant | 165 // be computed between any pair of nodes that have an ancestor/descendant |
| 166 // relationship. Transforms between other pairs of nodes may only be computed | 166 // relationship. Transforms between other pairs of nodes may only be computed |
| 167 // if the following condition holds: let id1 the larger id and let id2 be the | 167 // if the following condition holds: let id1 the larger id and let id2 be the |
| 168 // other id; then the nearest ancestor of node id1 whose id is smaller than | 168 // other id; then the nearest ancestor of node id1 whose id is smaller than |
| 169 // id2 is the lowest common ancestor of the pair of nodes, and the transform | 169 // id2 is the lowest common ancestor of the pair of nodes, and the transform |
| 170 // from this lowest common ancestor to node id2 is only a 2d translation. | 170 // from this lowest common ancestor to node id2 is only a 2d translation. |
| 171 bool ComputeTransform(int source_id, | 171 bool ComputeTransformForTesting(int source_id, |
| 172 int dest_id, | 172 int dest_id, |
| 173 gfx::Transform* transform) const; | 173 gfx::Transform* transform) const; |
| 174 | 174 |
| 175 void OnTransformAnimated(const gfx::Transform& transform, | 175 void OnTransformAnimated(const gfx::Transform& transform, |
| 176 int id, | 176 int id, |
| 177 LayerTreeImpl* layer_tree_impl); | 177 LayerTreeImpl* layer_tree_impl); |
| 178 // Computes the change of basis transform from node |source_id| to |dest_id|. | 178 // Computes the change of basis transform from node |source_id| to |dest_id|. |
| 179 // This is used by scroll children to compute transform from their scroll | 179 // This is used by scroll children to compute transform from their scroll |
| 180 // parent space (source) to their parent space (destination) and it can atmost | 180 // parent space (source) to their parent space (destination) and it can atmost |
| 181 // be a translation. This function assumes that the path from source to | 181 // be a translation. This function assumes that the path from source to |
| 182 // destination has only translations. So, it should not be called when there | 182 // destination has only translations. So, it should not be called when there |
| 183 // can be intermediate 3d transforms but the end result is a translation. | 183 // can be intermediate 3d transforms but the end result is a translation. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 | 245 |
| 246 const std::vector<int>& nodes_affected_by_inner_viewport_bounds_delta() | 246 const std::vector<int>& nodes_affected_by_inner_viewport_bounds_delta() |
| 247 const { | 247 const { |
| 248 return nodes_affected_by_inner_viewport_bounds_delta_; | 248 return nodes_affected_by_inner_viewport_bounds_delta_; |
| 249 } | 249 } |
| 250 const std::vector<int>& nodes_affected_by_outer_viewport_bounds_delta() | 250 const std::vector<int>& nodes_affected_by_outer_viewport_bounds_delta() |
| 251 const { | 251 const { |
| 252 return nodes_affected_by_outer_viewport_bounds_delta_; | 252 return nodes_affected_by_outer_viewport_bounds_delta_; |
| 253 } | 253 } |
| 254 | 254 |
| 255 gfx::Transform FromTarget(int node_id, int effect) const; | |
| 256 void SetFromTarget(int node_id, const gfx::Transform& transform); | |
| 257 | |
| 258 // TODO(sunxd): Remove target space transforms in cached data when we | |
| 259 // completely implement computing draw transforms on demand. | |
| 260 gfx::Transform ToTarget(int node_id, int effect_id) const; | |
| 261 void SetToTarget(int node_id, const gfx::Transform& transform); | |
| 262 | |
| 263 const gfx::Transform& FromScreen(int node_id) const; | 255 const gfx::Transform& FromScreen(int node_id) const; |
| 264 void SetFromScreen(int node_id, const gfx::Transform& transform); | 256 void SetFromScreen(int node_id, const gfx::Transform& transform); |
| 265 | 257 |
| 266 const gfx::Transform& ToScreen(int node_id) const; | 258 const gfx::Transform& ToScreen(int node_id) const; |
| 267 void SetToScreen(int node_id, const gfx::Transform& transform); | 259 void SetToScreen(int node_id, const gfx::Transform& transform); |
| 268 | 260 |
| 269 int TargetId(int node_id) const; | 261 int TargetId(int node_id) const; |
| 270 void SetTargetId(int node_id, int target_id); | 262 void SetTargetId(int node_id, int target_id); |
| 271 | 263 |
| 272 int ContentTargetId(int node_id) const; | 264 int ContentTargetId(int node_id) const; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 297 | 289 |
| 298 private: | 290 private: |
| 299 // Returns true iff the node at |desc_id| is a descendant of the node at | 291 // Returns true iff the node at |desc_id| is a descendant of the node at |
| 300 // |anc_id|. | 292 // |anc_id|. |
| 301 bool IsDescendant(int desc_id, int anc_id) const; | 293 bool IsDescendant(int desc_id, int anc_id) const; |
| 302 | 294 |
| 303 void UpdateLocalTransform(TransformNode* node); | 295 void UpdateLocalTransform(TransformNode* node); |
| 304 void UpdateScreenSpaceTransform(TransformNode* node, | 296 void UpdateScreenSpaceTransform(TransformNode* node, |
| 305 TransformNode* parent_node, | 297 TransformNode* parent_node, |
| 306 TransformNode* target_node); | 298 TransformNode* target_node); |
| 307 void UpdateSurfaceContentsScale(TransformNode* node); | |
| 308 void UpdateTargetSpaceTransform(TransformNode* node, | |
| 309 TransformNode* target_node); | |
| 310 void UpdateAnimationProperties(TransformNode* node, | 299 void UpdateAnimationProperties(TransformNode* node, |
| 311 TransformNode* parent_node); | 300 TransformNode* parent_node); |
| 312 void UndoSnapping(TransformNode* node); | 301 void UndoSnapping(TransformNode* node); |
| 313 void UpdateSnapping(TransformNode* node); | 302 void UpdateSnapping(TransformNode* node); |
| 314 void UpdateNodeAndAncestorsHaveIntegerTranslations( | 303 void UpdateNodeAndAncestorsHaveIntegerTranslations( |
| 315 TransformNode* node, | 304 TransformNode* node, |
| 316 TransformNode* parent_node); | 305 TransformNode* parent_node); |
| 317 bool NeedsSourceToParentUpdate(TransformNode* node); | 306 bool NeedsSourceToParentUpdate(TransformNode* node); |
| 318 void SetContentsRootPostLocalTransform(const gfx::Transform& transform, | 307 void SetContentsRootPostLocalTransform(const gfx::Transform& transform, |
| 319 gfx::PointF root_position); | 308 gfx::PointF root_position); |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 gfx::Transform* to_target) const; | 639 gfx::Transform* to_target) const; |
| 651 bool GetFromTarget(int transform_id, | 640 bool GetFromTarget(int transform_id, |
| 652 int effect_id, | 641 int effect_id, |
| 653 gfx::Transform* from_target) const; | 642 gfx::Transform* from_target) const; |
| 654 | 643 |
| 655 void ResetCachedData(); | 644 void ResetCachedData(); |
| 656 void UpdateCachedNumber(); | 645 void UpdateCachedNumber(); |
| 657 gfx::Transform ToScreenSpaceTransformWithoutSurfaceContentsScale( | 646 gfx::Transform ToScreenSpaceTransformWithoutSurfaceContentsScale( |
| 658 int transform_id, | 647 int transform_id, |
| 659 int effect_id) const; | 648 int effect_id) const; |
| 660 bool ComputeTransformToTarget(int transform_id, | |
| 661 int effect_id, | |
| 662 gfx::Transform* transform) const; | |
| 663 | 649 |
| 664 bool ComputeTransformFromTarget(int transform_id, | 650 bool ComputeTransformFromTarget(int transform_id, |
| 665 int effect_id, | 651 int effect_id, |
| 666 gfx::Transform* transform) const; | 652 gfx::Transform* transform) const; |
| 667 | 653 |
| 668 private: | 654 private: |
| 669 gfx::Vector2dF inner_viewport_container_bounds_delta_; | 655 gfx::Vector2dF inner_viewport_container_bounds_delta_; |
| 670 gfx::Vector2dF outer_viewport_container_bounds_delta_; | 656 gfx::Vector2dF outer_viewport_container_bounds_delta_; |
| 671 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; | 657 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; |
| 672 | 658 |
| 673 // GetDrawTransforms may change the value of cached_data_. | 659 // GetDrawTransforms may change the value of cached_data_. |
| 674 DrawTransforms& GetDrawTransforms(int transform_id, int effect_id) const; | 660 DrawTransforms& GetDrawTransforms(int transform_id, int effect_id) const; |
| 675 DrawTransformData& FetchDrawTransformsDataFromCache(int transform_id, | 661 DrawTransformData& FetchDrawTransformsDataFromCache(int transform_id, |
| 676 int effect_id) const; | 662 int effect_id) const; |
| 677 | 663 |
| 678 PropertyTreesCachedData cached_data_; | 664 PropertyTreesCachedData cached_data_; |
| 679 }; | 665 }; |
| 680 | 666 |
| 681 } // namespace cc | 667 } // namespace cc |
| 682 | 668 |
| 683 #endif // CC_TREES_PROPERTY_TREE_H_ | 669 #endif // CC_TREES_PROPERTY_TREE_H_ |
| OLD | NEW |