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 |