| 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 <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 : id(-1), | 21 : id(-1), |
| 22 parent_id(-1), | 22 parent_id(-1), |
| 23 value(value), | 23 value(value), |
| 24 layer(layer) {} | 24 layer(layer) {} |
| 25 int id; | 25 int id; |
| 26 int parent_id; | 26 int parent_id; |
| 27 T value; | 27 T value; |
| 28 Layer* layer; | 28 Layer* layer; |
| 29 }; | 29 }; |
| 30 | 30 |
| 31 typedef TreeNode<double> OpacityTreeNode; | 31 typedef TreeNode<double> OpacityNode; |
| 32 | 32 |
| 33 struct TransformTreeNode : public TreeNode<gfx::Transform> { | 33 struct TransformNode : public TreeNode<gfx::Transform> { |
| 34 TransformTreeNode(Layer* layer, const gfx::Transform& transform); | 34 TransformNode(Layer* layer, const gfx::Transform& transform); |
| 35 ~TransformTreeNode(); | 35 ~TransformNode(); |
| 36 // TODO(awoloszyn): can we rework the algorithm so that we don't need this | 36 // TODO(awoloszyn): can we rework the algorithm so that we don't need this |
| 37 // rect? | 37 // rect? |
| 38 gfx::Transform clip_transform_from_transform_parent; | 38 gfx::Transform clip_transform_from_transform_parent; |
| 39 gfx::RectF clip_rect; | 39 gfx::RectF clip_rect; |
| 40 }; | 40 }; |
| 41 | 41 |
| 42 struct ClipTreeNode : public TreeNode<gfx::RectF> { | 42 struct ClipNode : public TreeNode<gfx::RectF> { |
| 43 ClipTreeNode(Layer* layer, const gfx::RectF& rect); | 43 ClipNode(Layer* layer, const gfx::RectF& rect); |
| 44 ClipTreeNode(Layer* layer, const gfx::RectF& rect, bool clips); | 44 ClipNode(Layer* layer, const gfx::RectF& rect, bool clips); |
| 45 gfx::RectF GetClipForLayer(Layer* layer) const { | 45 gfx::RectF GetClipForLayer(Layer* layer) const { |
| 46 if(clips) | 46 if(clips) |
| 47 return value; | 47 return value; |
| 48 return gfx::RectF(layer->content_bounds()); | 48 return gfx::RectF(layer->content_bounds()); |
| 49 } | 49 } |
| 50 ~ClipTreeNode(); | 50 ~ClipNode(); |
| 51 | 51 |
| 52 // ClipTreeNodes that don't clip are used to reset clipping state. | 52 // ClipNodes that don't clip are used to reset clipping state. |
| 53 bool clips; | 53 bool clips; |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 template <typename T> | 56 template <typename T> |
| 57 class PropertyTree { | 57 class PropertyTree { |
| 58 public: | 58 public: |
| 59 PropertyTree(); | 59 explicit PropertyTree(Layer* root); |
| 60 // Not virtual. Should not derive from this class. | 60 // Not virtual. Should not derive from this class. |
| 61 ~PropertyTree(); | 61 ~PropertyTree(); |
| 62 | 62 |
| 63 // Returns id of inserted layer. | 63 // TODO(vollick): we can probably do without the return value. |
| 64 int InsertRootNode(const T& tree_node); | 64 int InsertWithParent(const T& tree_node, int parent_id); |
| 65 | 65 |
| 66 // Returns id of inserted layer. | |
| 67 int InsertWithParent(const T& tree_node, int parent_id); | |
| 68 int GetLastNodeID() const; | 66 int GetLastNodeID() const; |
| 69 | 67 |
| 70 T* Node(int id); | 68 T* Node(int id); |
| 71 const T* Node(int id) const; | 69 const T* Node(int id) const; |
| 72 | 70 |
| 73 T* root() { return Node(0); } | 71 T* root() { return Node(0); } |
| 74 const T* root() const { return Node(0); } | 72 const T* root() const { return Node(0); } |
| 75 | 73 |
| 76 void clear() { nodes_.clear(); } | 74 void clear() { nodes_.clear(); } |
| 77 typedef T NodeType; | 75 typedef T NodeType; |
| 78 | 76 |
| 79 private: | 77 private: |
| 78 int InsertRootNode(const T& tree_node); |
| 80 std::vector<T> nodes_; | 79 std::vector<T> nodes_; |
| 81 }; | 80 }; |
| 82 | 81 |
| 83 typedef PropertyTree<TransformTreeNode> TransformTree; | 82 typedef PropertyTree<TransformNode> TransformTree; |
| 84 typedef PropertyTree<OpacityTreeNode> OpacityTree; | 83 typedef PropertyTree<OpacityNode> OpacityTree; |
| 85 typedef PropertyTree<ClipTreeNode> ClipTree; | 84 typedef PropertyTree<ClipNode> ClipTree; |
| 86 | 85 |
| 87 } // namespace cc | 86 } // namespace cc |
| 88 | 87 |
| 89 #endif // CC_TREES_PROPERTY_TREE_H_ | 88 #endif // CC_TREES_PROPERTY_TREE_H_ |
| OLD | NEW |