Chromium Code Reviews| Index: cc/trees/property_tree.h |
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h |
| index e863295a359f980d6797d236d55ca50bdd0ef3be..abd0a9f1d2c83587bf126a4ab26eb7ae397db64f 100644 |
| --- a/cc/trees/property_tree.h |
| +++ b/cc/trees/property_tree.h |
| @@ -270,8 +270,13 @@ struct CC_EXPORT ScrollNodeData { |
| bool scrollable; |
| uint32_t main_thread_scrolling_reasons; |
| bool contains_non_fast_scrollable_region; |
| - |
| - int transform_id; |
| + gfx::Size scroll_clip_layer_bounds; |
| + gfx::Size bounds; |
| + bool envelope_page_scale_layer_with_clip_layer; |
|
ajuma
2016/02/09 16:27:13
This variable could use a comment (or perhaps a cl
|
| + bool is_inner_viewport_scroll_layer; |
| + bool is_outer_viewport_scroll_layer; |
| + bool is_inner_viewport_container_layer; |
| + bool is_outer_viewport_container_layer; |
| bool operator==(const ScrollNodeData& other) const; |
| @@ -281,6 +286,8 @@ struct CC_EXPORT ScrollNodeData { |
| typedef TreeNode<ScrollNodeData> ScrollNode; |
| +class PropertyTrees; |
| + |
| template <typename T> |
| class CC_EXPORT PropertyTree { |
| public: |
| @@ -324,11 +331,17 @@ class CC_EXPORT PropertyTree { |
| void ToProtobuf(proto::PropertyTree* proto) const; |
| void FromProtobuf(const proto::PropertyTree& proto); |
| + void SetPropertyTrees(PropertyTrees* property_trees) { |
| + property_trees_ = property_trees; |
| + } |
| + PropertyTrees* property_trees() const { return property_trees_; } |
| + |
| private: |
| // Copy and assign are permitted. This is how we do tree sync. |
| std::vector<T> nodes_; |
| bool needs_update_; |
| + PropertyTrees* property_trees_; |
| }; |
| class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |
| @@ -411,15 +424,9 @@ class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |
| return device_transform_scale_factor_; |
| } |
| - void SetInnerViewportBoundsDelta(gfx::Vector2dF bounds_delta); |
| - gfx::Vector2dF inner_viewport_bounds_delta() const { |
| - return inner_viewport_bounds_delta_; |
| - } |
| + void UpdateInnerViewportContainerBoundsDelta(); |
| - void SetOuterViewportBoundsDelta(gfx::Vector2dF bounds_delta); |
| - gfx::Vector2dF outer_viewport_bounds_delta() const { |
| - return outer_viewport_bounds_delta_; |
| - } |
| + void UpdateOuterViewportContainerBoundsDelta(); |
| void AddNodeAffectedByInnerViewportBoundsDelta(int node_id); |
| void AddNodeAffectedByOuterViewportBoundsDelta(int node_id); |
| @@ -481,8 +488,6 @@ class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |
| float page_scale_factor_; |
| float device_scale_factor_; |
| float device_transform_scale_factor_; |
| - gfx::Vector2dF inner_viewport_bounds_delta_; |
| - gfx::Vector2dF outer_viewport_bounds_delta_; |
| std::vector<int> nodes_affected_by_inner_viewport_bounds_delta_; |
| std::vector<int> nodes_affected_by_outer_viewport_bounds_delta_; |
| }; |
| @@ -518,10 +523,15 @@ class CC_EXPORT EffectTree final : public PropertyTree<EffectNode> { |
| class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| public: |
| + ScrollTree(); |
| + ~ScrollTree() override; |
| + |
| bool operator==(const ScrollTree& other) const; |
| void ToProtobuf(proto::PropertyTree* proto) const; |
| void FromProtobuf(const proto::PropertyTree& proto); |
| + |
| + gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; |
| }; |
| class CC_EXPORT PropertyTrees final { |
| @@ -534,6 +544,13 @@ class CC_EXPORT PropertyTrees final { |
| void ToProtobuf(proto::PropertyTrees* proto) const; |
| void FromProtobuf(const proto::PropertyTrees& proto); |
| + void SetupInternalPointers() { |
| + transform_tree.SetPropertyTrees(this); |
| + effect_tree.SetPropertyTrees(this); |
| + clip_tree.SetPropertyTrees(this); |
| + scroll_tree.SetPropertyTrees(this); |
|
ajuma
2016/02/09 16:27:13
How about making the constructor and assignment op
|
| + } |
| + |
| TransformTree transform_tree; |
| EffectTree effect_tree; |
| ClipTree clip_tree; |
| @@ -541,6 +558,27 @@ class CC_EXPORT PropertyTrees final { |
| bool needs_rebuild; |
| bool non_root_surfaces_enabled; |
| int sequence_number; |
| + |
| + void SetInnerViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta); |
| + void SetOuterViewportContainerBoundsDelta(gfx::Vector2dF bounds_delta); |
| + void SetInnerViewportScrollBoundsDelta(gfx::Vector2dF bounds_delta); |
| + |
| + gfx::Vector2dF inner_viewport_container_bounds_delta() const { |
| + return inner_viewport_container_bounds_delta_; |
| + } |
| + |
| + gfx::Vector2dF outer_viewport_container_bounds_delta() const { |
| + return outer_viewport_container_bounds_delta_; |
| + } |
| + |
| + gfx::Vector2dF inner_viewport_scroll_bounds_delta() const { |
| + return inner_viewport_scroll_bounds_delta_; |
| + } |
| + |
| + private: |
| + gfx::Vector2dF inner_viewport_container_bounds_delta_; |
| + gfx::Vector2dF outer_viewport_container_bounds_delta_; |
| + gfx::Vector2dF inner_viewport_scroll_bounds_delta_; |
| }; |
| } // namespace cc |