Chromium Code Reviews| Index: cc/trees/layer_tree.h |
| diff --git a/cc/trees/layer_tree.h b/cc/trees/layer_tree.h |
| index bb7e3d2adbf9af2cae7c996edfa1617bc75cf454..f9aae82c8456e133943ad703a9ddfe13ea1c6290 100644 |
| --- a/cc/trees/layer_tree.h |
| +++ b/cc/trees/layer_tree.h |
| @@ -10,6 +10,8 @@ |
| #include "base/macros.h" |
| #include "cc/base/cc_export.h" |
| +#include "cc/layers/layer_list_iterator.h" |
| +#include "cc/trees/mutator_host_client.h" |
| namespace cc { |
| @@ -20,13 +22,15 @@ class LayerUpdate; |
| class AnimationHost; |
| class Layer; |
| +class LayerTreeHost; |
| -class CC_EXPORT LayerTree { |
| +class CC_EXPORT LayerTree : public MutatorHostClient { |
| public: |
| using LayerSet = std::unordered_set<Layer*>; |
| using LayerIdMap = std::unordered_map<int, Layer*>; |
| - explicit LayerTree(std::unique_ptr<AnimationHost> animation_host); |
| + LayerTree(std::unique_ptr<AnimationHost> animation_host, |
| + LayerTreeHost* layer_tree_host); |
| ~LayerTree(); |
| void RegisterLayer(Layer* layer); |
| @@ -47,6 +51,50 @@ class CC_EXPORT LayerTree { |
| bool in_paint_layer_contents() const { return in_paint_layer_contents_; } |
| + Layer* LayerByElementId(ElementId element_id) const; |
| + void AddToElementMap(Layer* layer); |
| + void RemoveFromElementMap(Layer* layer); |
| + |
| + // MutatorHostClient implementation. |
|
Khushal
2016/08/15 17:46:39
Can this be implemented privately instead?
xingliu
2016/08/15 21:29:12
The interface functions are mainly called from cc/
Khushal
2016/08/16 05:37:17
You can still make the implementation here private
xingliu
2016/08/16 16:45:15
Oh, this is cool, fixed.
|
| + bool IsElementInList(ElementId element_id, |
| + ElementListType list_type) const override; |
| + void SetMutatorsNeedCommit() override; |
| + void SetMutatorsNeedRebuildPropertyTrees() override; |
| + void SetElementFilterMutated(ElementId element_id, |
| + ElementListType list_type, |
| + const FilterOperations& filters) override; |
| + void SetElementOpacityMutated(ElementId element_id, |
| + ElementListType list_type, |
| + float opacity) override; |
| + void SetElementTransformMutated(ElementId element_id, |
| + ElementListType list_type, |
| + const gfx::Transform& transform) override; |
| + void SetElementScrollOffsetMutated( |
| + ElementId element_id, |
| + ElementListType list_type, |
| + const gfx::ScrollOffset& scroll_offset) override; |
| + void ElementTransformIsAnimatingChanged(ElementId element_id, |
| + ElementListType list_type, |
| + AnimationChangeType change_type, |
| + bool is_animating) override; |
| + void ElementOpacityIsAnimatingChanged(ElementId element_id, |
| + ElementListType list_type, |
| + AnimationChangeType change_type, |
| + bool is_animating) override; |
| + void ElementFilterIsAnimatingChanged(ElementId element_id, |
| + ElementListType list_type, |
| + AnimationChangeType change_type, |
| + bool is_animating) override; |
| + void ScrollOffsetAnimationFinished() override {} |
| + gfx::ScrollOffset GetScrollOffsetForAnimation( |
| + ElementId element_id) const override; |
| + |
| + // Layer iterators. |
| + LayerListIterator<Layer> begin() const; |
| + LayerListIterator<Layer> end() const; |
| + LayerListReverseIterator<Layer> rbegin(); |
| + LayerListReverseIterator<Layer> rend(); |
| + |
| private: |
| friend class LayerTreeHostSerializationTest; |
| @@ -56,9 +104,13 @@ class CC_EXPORT LayerTree { |
| // Layer id to Layer map. |
| LayerIdMap layer_id_map_; |
| + using ElementLayersMap = std::unordered_map<ElementId, Layer*, ElementIdHash>; |
| + ElementLayersMap element_layers_map_; |
| + |
| bool in_paint_layer_contents_; |
| std::unique_ptr<AnimationHost> animation_host_; |
| + LayerTreeHost* layer_tree_host_; |
| DISALLOW_COPY_AND_ASSIGN(LayerTree); |
| }; |