Chromium Code Reviews| Index: cc/trees/property_tree.h |
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h |
| index 43dcda590751f4458f6cc876a3619804871d4857..459eb4277f1f89a678dccc7f1f3e0cf53991a68a 100644 |
| --- a/cc/trees/property_tree.h |
| +++ b/cc/trees/property_tree.h |
| @@ -16,9 +16,10 @@ namespace cc { |
| template <typename T> |
| struct CC_EXPORT TreeNode { |
| - TreeNode() : id(-1), parent_id(-1), data() {} |
| + TreeNode() : id(-1), parent_id(-1), owner_id(-1), data() {} |
| int id; |
| int parent_id; |
| + int owner_id; |
| T data; |
| }; |
| @@ -82,6 +83,10 @@ struct CC_EXPORT TransformNodeData { |
| // This is used as a fallback when we either cannot adjust raster scale or if |
| // the raster scale cannot be extracted from the screen space transform. |
| float layer_scale_factor; |
| + |
| + // TODO(vollick): will be moved when accelerated effects are implemented. |
| + float post_local_scale_factor; |
| + |
| gfx::Vector2dF sublayer_scale; |
| // TODO(vollick): will be moved when accelerated effects are implemented. |
| @@ -92,10 +97,16 @@ struct CC_EXPORT TransformNodeData { |
| // This value stores the snapped amount for this purpose. |
| gfx::Vector2dF scroll_snap; |
| + // TODO(vollick): will be moved when accelerated effects are implemented. |
| + gfx::Vector2dF parent_offset; |
| + |
| void set_to_parent(const gfx::Transform& transform) { |
| to_parent = transform; |
| is_invertible = to_parent.IsInvertible(); |
| } |
| + |
| + void update_post_local_transform(const gfx::PointF& position, |
| + const gfx::Point3F& transform_origin); |
| }; |
| typedef TreeNode<TransformNodeData> TransformNode; |
| @@ -121,22 +132,22 @@ class CC_EXPORT PropertyTree { |
| int Insert(const T& tree_node, int parent_id); |
| - T* Node(int i) { return i > -1 ? &nodes_[i] : nullptr; } |
| - const T* Node(int i) const { return i > -1 ? &nodes_[i] : nullptr; } |
| - |
| - T* parent(const T* t) { |
| - return t->parent_id > -1 ? Node(t->parent_id) : nullptr; |
| + T* Node(int i) { |
| + return i > -1 && i < static_cast<int>(size()) ? &nodes_[i] : nullptr; |
|
ajuma
2015/04/16 14:52:14
Do we need this check because we're winding up wit
Ian Vollick
2015/04/17 14:56:22
This was due to a bad bug! What was happening was
|
| } |
| - const T* parent(const T* t) const { |
| - return t->parent_id > -1 ? Node(t->parent_id) : nullptr; |
| + const T* Node(int i) const { |
| + return i > -1 && i < static_cast<int>(size()) ? &nodes_[i] : nullptr; |
| } |
| + T* parent(const T* t) { return Node(t->parent_id); } |
| + const T* parent(const T* t) const { return Node(t->parent_id); } |
| + |
| T* back() { return size() ? &nodes_[nodes_.size() - 1] : nullptr; } |
| const T* back() const { |
| return size() ? &nodes_[nodes_.size() - 1] : nullptr; |
| } |
| - void clear() { nodes_.clear(); } |
| + void clear(); |
| size_t size() const { return nodes_.size(); } |
| private: |
| @@ -213,9 +224,12 @@ class CC_EXPORT OpacityTree final : public PropertyTree<OpacityNode> {}; |
| class CC_EXPORT PropertyTrees final { |
| public: |
| + PropertyTrees(); |
| + |
| TransformTree transform_tree; |
| OpacityTree opacity_tree; |
| ClipTree clip_tree; |
| + bool needs_rebuild; |
| }; |
| } // namespace cc |