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); |
}; |