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 13 matching lines...) Expand all Loading... | |
24 } | 24 } |
25 | 25 |
26 namespace cc { | 26 namespace cc { |
27 | 27 |
28 namespace proto { | 28 namespace proto { |
29 class ClipNodeData; | 29 class ClipNodeData; |
30 class EffectNodeData; | 30 class EffectNodeData; |
31 class PropertyTree; | 31 class PropertyTree; |
32 class PropertyTrees; | 32 class PropertyTrees; |
33 class ScrollNodeData; | 33 class ScrollNodeData; |
34 class TranformNodeData; | 34 class TransformNodeData; |
35 class TransformCachedNodeData; | |
35 class TransformTreeData; | 36 class TransformTreeData; |
36 class TreeNode; | 37 class TreeNode; |
37 } | 38 } |
38 | 39 |
39 class CopyOutputRequest; | 40 class CopyOutputRequest; |
40 class LayerTreeImpl; | 41 class LayerTreeImpl; |
41 class RenderSurfaceImpl; | 42 class RenderSurfaceImpl; |
42 class ScrollState; | 43 class ScrollState; |
43 struct ScrollAndScaleSet; | 44 struct ScrollAndScaleSet; |
44 | 45 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 // directly on the transform/scroll display list items when that's possible, | 88 // directly on the transform/scroll display list items when that's possible, |
88 // or potentially in a scroll tree. | 89 // or potentially in a scroll tree. |
89 // | 90 // |
90 // TODO(vollick): will be moved when accelerated effects are implemented. | 91 // TODO(vollick): will be moved when accelerated effects are implemented. |
91 gfx::Transform pre_local; | 92 gfx::Transform pre_local; |
92 gfx::Transform local; | 93 gfx::Transform local; |
93 gfx::Transform post_local; | 94 gfx::Transform post_local; |
94 | 95 |
95 gfx::Transform to_parent; | 96 gfx::Transform to_parent; |
96 | 97 |
97 gfx::Transform to_target; | |
98 gfx::Transform from_target; | |
99 | |
100 gfx::Transform to_screen; | |
101 gfx::Transform from_screen; | |
102 | |
103 int target_id; | |
104 // This id is used for all content that draws into a render surface associated | |
105 // with this transform node. | |
106 int content_target_id; | |
107 | |
108 // This is the node with respect to which source_offset is defined. This will | 98 // This is the node with respect to which source_offset is defined. This will |
109 // not be needed once layerization moves to cc, but is needed in order to | 99 // not be needed once layerization moves to cc, but is needed in order to |
110 // efficiently update the transform tree for changes to position in the layer | 100 // efficiently update the transform tree for changes to position in the layer |
111 // tree. | 101 // tree. |
112 int source_node_id; | 102 int source_node_id; |
113 | 103 |
114 // This id determines which 3d rendering context the node is in. 0 is a | 104 // This id determines which 3d rendering context the node is in. 0 is a |
115 // special value and indicates that the node is not in any 3d rendering | 105 // special value and indicates that the node is not in any 3d rendering |
116 // context. | 106 // context. |
117 int sorting_context_id; | 107 int sorting_context_id; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
206 | 196 |
207 void update_post_local_transform(const gfx::PointF& position, | 197 void update_post_local_transform(const gfx::PointF& position, |
208 const gfx::Point3F& transform_origin); | 198 const gfx::Point3F& transform_origin); |
209 | 199 |
210 void ToProtobuf(proto::TreeNode* proto) const; | 200 void ToProtobuf(proto::TreeNode* proto) const; |
211 void FromProtobuf(const proto::TreeNode& proto); | 201 void FromProtobuf(const proto::TreeNode& proto); |
212 | 202 |
213 void AsValueInto(base::trace_event::TracedValue* value) const; | 203 void AsValueInto(base::trace_event::TracedValue* value) const; |
214 }; | 204 }; |
215 | 205 |
206 struct CC_EXPORT TransformCachedNodeData { | |
207 TransformCachedNodeData(); | |
208 TransformCachedNodeData(const TransformCachedNodeData& other); | |
209 ~TransformCachedNodeData(); | |
210 | |
211 gfx::Transform from_target; | |
212 gfx::Transform to_target; | |
213 gfx::Transform from_screen; | |
214 gfx::Transform to_screen; | |
215 int target_id; | |
216 // This id is used for all content that draws into a render surface associated | |
217 // with this transform node. | |
218 int content_target_id; | |
219 | |
220 bool operator==(const TransformCachedNodeData& other) const; | |
221 | |
222 void ToProtobuf(proto::TransformCachedNodeData* proto) const; | |
223 void FromProtobuf(const proto::TransformCachedNodeData& proto); | |
224 }; | |
225 | |
216 typedef TreeNode<TransformNodeData> TransformNode; | 226 typedef TreeNode<TransformNodeData> TransformNode; |
217 | 227 |
218 struct CC_EXPORT ClipNodeData { | 228 struct CC_EXPORT ClipNodeData { |
219 ClipNodeData(); | 229 ClipNodeData(); |
220 ClipNodeData(const ClipNodeData& other); | 230 ClipNodeData(const ClipNodeData& other); |
221 | 231 |
222 // The clip rect that this node contributes, expressed in the space of its | 232 // The clip rect that this node contributes, expressed in the space of its |
223 // transform node. | 233 // transform node. |
224 gfx::RectF clip; | 234 gfx::RectF clip; |
225 | 235 |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
399 PropertyTrees* property_trees_; | 409 PropertyTrees* property_trees_; |
400 }; | 410 }; |
401 | 411 |
402 class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { | 412 class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |
403 public: | 413 public: |
404 TransformTree(); | 414 TransformTree(); |
405 ~TransformTree(); | 415 ~TransformTree(); |
406 | 416 |
407 bool operator==(const TransformTree& other) const; | 417 bool operator==(const TransformTree& other) const; |
408 | 418 |
419 int Insert(const TransformNode& tree_node, int parent_id); | |
420 | |
409 void clear(); | 421 void clear(); |
410 | 422 |
411 // Computes the change of basis transform from node |source_id| to |dest_id|. | 423 // Computes the change of basis transform from node |source_id| to |dest_id|. |
412 // The function returns false iff the inverse of a singular transform was | 424 // The function returns false iff the inverse of a singular transform was |
413 // used (and the result should, therefore, not be trusted). Transforms may | 425 // used (and the result should, therefore, not be trusted). Transforms may |
414 // be computed between any pair of nodes that have an ancestor/descendant | 426 // be computed between any pair of nodes that have an ancestor/descendant |
415 // relationship. Transforms between other pairs of nodes may only be computed | 427 // relationship. Transforms between other pairs of nodes may only be computed |
416 // if the following condition holds: let id1 the larger id and let id2 be the | 428 // if the following condition holds: let id1 the larger id and let id2 be the |
417 // other id; then the nearest ancestor of node id1 whose id is smaller than | 429 // other id; then the nearest ancestor of node id1 whose id is smaller than |
418 // id2 is the lowest common ancestor of the pair of nodes, and the transform | 430 // id2 is the lowest common ancestor of the pair of nodes, and the transform |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
498 | 510 |
499 const std::vector<int>& nodes_affected_by_inner_viewport_bounds_delta() | 511 const std::vector<int>& nodes_affected_by_inner_viewport_bounds_delta() |
500 const { | 512 const { |
501 return nodes_affected_by_inner_viewport_bounds_delta_; | 513 return nodes_affected_by_inner_viewport_bounds_delta_; |
502 } | 514 } |
503 const std::vector<int>& nodes_affected_by_outer_viewport_bounds_delta() | 515 const std::vector<int>& nodes_affected_by_outer_viewport_bounds_delta() |
504 const { | 516 const { |
505 return nodes_affected_by_outer_viewport_bounds_delta_; | 517 return nodes_affected_by_outer_viewport_bounds_delta_; |
506 } | 518 } |
507 | 519 |
520 const gfx::Transform& FromTarget(int node_id) const; | |
521 void SetFromTarget(int node_id, const gfx::Transform& transform); | |
ajuma
2016/06/07 19:51:01
Please add whitespace in between pairs of getters/
sunxd
2016/06/07 20:34:22
Done.
| |
522 const gfx::Transform& ToTarget(int node_id) const; | |
523 void SetToTarget(int node_id, const gfx::Transform& transform); | |
524 const gfx::Transform& FromScreen(int node_id) const; | |
525 void SetFromScreen(int node_id, const gfx::Transform& transform); | |
526 const gfx::Transform& ToScreen(int node_id) const; | |
527 void SetToScreen(int node_id, const gfx::Transform& transform); | |
528 int TargetId(int node_id) const; | |
529 void SetTargetId(int node_id, int target_id); | |
530 int ContentTargetId(int node_id) const; | |
531 void SetContentTargetId(int node_id, int content_target_id); | |
532 const std::vector<TransformCachedNodeData>& cached_data() const { | |
533 return cached_data_; | |
534 } | |
535 | |
508 gfx::Transform ToScreenSpaceTransformWithoutSublayerScale(int id) const; | 536 gfx::Transform ToScreenSpaceTransformWithoutSublayerScale(int id) const; |
509 | 537 |
510 void ToProtobuf(proto::PropertyTree* proto) const; | 538 void ToProtobuf(proto::PropertyTree* proto) const; |
511 void FromProtobuf(const proto::PropertyTree& proto, | 539 void FromProtobuf(const proto::PropertyTree& proto, |
512 std::unordered_map<int, int>* node_id_to_index_map); | 540 std::unordered_map<int, int>* node_id_to_index_map); |
513 | 541 |
514 private: | 542 private: |
515 // Returns true iff the node at |desc_id| is a descendant of the node at | 543 // Returns true iff the node at |desc_id| is a descendant of the node at |
516 // |anc_id|. | 544 // |anc_id|. |
517 bool IsDescendant(int desc_id, int anc_id) const; | 545 bool IsDescendant(int desc_id, int anc_id) const; |
(...skipping 30 matching lines...) Expand all Loading... | |
548 | 576 |
549 bool source_to_parent_updates_allowed_; | 577 bool source_to_parent_updates_allowed_; |
550 // When to_screen transform has perspective, the transform node's sublayer | 578 // When to_screen transform has perspective, the transform node's sublayer |
551 // scale is calculated using page scale factor, device scale factor and the | 579 // scale is calculated using page scale factor, device scale factor and the |
552 // scale factor of device transform. So we need to store them explicitly. | 580 // scale factor of device transform. So we need to store them explicitly. |
553 float page_scale_factor_; | 581 float page_scale_factor_; |
554 float device_scale_factor_; | 582 float device_scale_factor_; |
555 float device_transform_scale_factor_; | 583 float device_transform_scale_factor_; |
556 std::vector<int> nodes_affected_by_inner_viewport_bounds_delta_; | 584 std::vector<int> nodes_affected_by_inner_viewport_bounds_delta_; |
557 std::vector<int> nodes_affected_by_outer_viewport_bounds_delta_; | 585 std::vector<int> nodes_affected_by_outer_viewport_bounds_delta_; |
586 std::vector<TransformCachedNodeData> cached_data_; | |
558 }; | 587 }; |
559 | 588 |
560 class CC_EXPORT ClipTree final : public PropertyTree<ClipNode> { | 589 class CC_EXPORT ClipTree final : public PropertyTree<ClipNode> { |
561 public: | 590 public: |
562 bool operator==(const ClipTree& other) const; | 591 bool operator==(const ClipTree& other) const; |
563 | 592 |
564 void SetViewportClip(gfx::RectF viewport_rect); | 593 void SetViewportClip(gfx::RectF viewport_rect); |
565 gfx::RectF ViewportClip(); | 594 gfx::RectF ViewportClip(); |
566 | 595 |
567 void ToProtobuf(proto::PropertyTree* proto) const; | 596 void ToProtobuf(proto::PropertyTree* proto) const; |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
739 | 768 |
740 private: | 769 private: |
741 gfx::Vector2dF inner_viewport_container_bounds_delta_; | 770 gfx::Vector2dF inner_viewport_container_bounds_delta_; |
742 gfx::Vector2dF outer_viewport_container_bounds_delta_; | 771 gfx::Vector2dF outer_viewport_container_bounds_delta_; |
743 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; | 772 gfx::Vector2dF inner_viewport_scroll_bounds_delta_; |
744 }; | 773 }; |
745 | 774 |
746 } // namespace cc | 775 } // namespace cc |
747 | 776 |
748 #endif // CC_TREES_PROPERTY_TREE_H_ | 777 #endif // CC_TREES_PROPERTY_TREE_H_ |
OLD | NEW |