| Index: cc/trees/property_tree.h
|
| diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h
|
| index 58d4f5f823d3cdf8e1e8937f279dc7abac405666..77e70367cca2798032177d0a9b2e443f06dd1e15 100644
|
| --- a/cc/trees/property_tree.h
|
| +++ b/cc/trees/property_tree.h
|
| @@ -100,6 +100,7 @@ class CC_EXPORT PropertyTree {
|
| private:
|
| std::vector<T> nodes_;
|
|
|
| + friend class ClipTree;
|
| friend class TransformTree;
|
| bool needs_update_;
|
| PropertyTrees* property_trees_;
|
| @@ -286,6 +287,7 @@ class CC_EXPORT ClipTree final : public PropertyTree<ClipNode> {
|
|
|
| void SetViewportClip(gfx::RectF viewport_rect);
|
| gfx::RectF ViewportClip() const;
|
| + void set_needs_update(bool needs_update);
|
| };
|
|
|
| class CC_EXPORT EffectTree final : public PropertyTree<EffectNode> {
|
| @@ -534,10 +536,33 @@ struct DrawTransformData {
|
| transforms(gfx::Transform(), gfx::Transform()) {}
|
| };
|
|
|
| +struct ConditionalClip {
|
| + bool is_clipped;
|
| + gfx::RectF clip_rect;
|
| +};
|
| +
|
| +struct ClipRectData {
|
| + int update_number;
|
| + int target_id;
|
| + ConditionalClip clip;
|
| +
|
| + ClipRectData() : update_number(-1), target_id(-1) {}
|
| +};
|
| +
|
| +struct VisibleRectData {
|
| + int update_number;
|
| + gfx::RectF visible_rect;
|
| +
|
| + VisibleRectData() : update_number(-1) {}
|
| +};
|
| +
|
| struct PropertyTreesCachedData {
|
| int transform_tree_update_number;
|
| + int clip_tree_update_number;
|
| std::vector<AnimationScaleData> animation_scales;
|
| mutable std::vector<std::vector<DrawTransformData>> draw_transforms;
|
| + mutable std::vector<std::vector<ClipRectData>> clip_rects;
|
| + mutable std::vector<VisibleRectData> visible_rects;
|
|
|
| PropertyTreesCachedData();
|
| ~PropertyTreesCachedData();
|
| @@ -636,6 +661,7 @@ class CC_EXPORT PropertyTrees final {
|
|
|
| void ResetCachedData();
|
| void UpdateTransformTreeUpdateNumber();
|
| + void UpdateClipTreeUpdateNumber();
|
| gfx::Transform ToScreenSpaceTransformWithoutSurfaceContentsScale(
|
| int transform_id,
|
| int effect_id) const;
|
| @@ -644,6 +670,17 @@ class CC_EXPORT PropertyTrees final {
|
| int effect_id,
|
| gfx::Transform* transform) const;
|
|
|
| + ConditionalClip& FetchClipRectFromCache(int clip_id,
|
| + int target_id,
|
| + int cache_index) const;
|
| + int ClipRectCacheId(int clip_id, int target_id) const;
|
| + void AddToClipRectCache(int clip_id,
|
| + int target_id,
|
| + const ConditionalClip& clip);
|
| + bool IsInVisibleRectCache(int clip_id) const;
|
| + gfx::RectF FetchVisibleRectFromCache(int clip_id) const;
|
| + void AddToVisibleRectCache(int clip_id, const gfx::RectF& rect);
|
| +
|
| private:
|
| gfx::Vector2dF inner_viewport_container_bounds_delta_;
|
| gfx::Vector2dF outer_viewport_container_bounds_delta_;
|
|
|