OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_LAYERS_LAYER_H_ | 5 #ifndef CC_LAYERS_LAYER_H_ |
6 #define CC_LAYERS_LAYER_H_ | 6 #define CC_LAYERS_LAYER_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 class LayerTreeHost; | 60 class LayerTreeHost; |
61 class LayerTreeHostCommon; | 61 class LayerTreeHostCommon; |
62 class LayerTreeImpl; | 62 class LayerTreeImpl; |
63 class LayerTreeSettings; | 63 class LayerTreeSettings; |
64 class RenderingStatsInstrumentation; | 64 class RenderingStatsInstrumentation; |
65 class ResourceUpdateQueue; | 65 class ResourceUpdateQueue; |
66 class ScrollbarLayerInterface; | 66 class ScrollbarLayerInterface; |
67 class SimpleEnclosedRegion; | 67 class SimpleEnclosedRegion; |
68 struct AnimationEvent; | 68 struct AnimationEvent; |
69 | 69 |
| 70 namespace proto { |
| 71 class LayerNode; |
| 72 } // namespace proto |
| 73 |
70 // Base class for composited layers. Special layer types are derived from | 74 // Base class for composited layers. Special layer types are derived from |
71 // this class. | 75 // this class. |
72 class CC_EXPORT Layer : public base::RefCounted<Layer>, | 76 class CC_EXPORT Layer : public base::RefCounted<Layer>, |
73 public LayerAnimationValueObserver, | 77 public LayerAnimationValueObserver, |
74 public LayerAnimationValueProvider { | 78 public LayerAnimationValueProvider { |
75 public: | 79 public: |
76 typedef LayerList LayerListType; | 80 typedef LayerList LayerListType; |
| 81 typedef base::hash_map<int, scoped_refptr<Layer>> LayerIdMap; |
77 | 82 |
78 enum LayerIdLabels { | 83 enum LayerIdLabels { |
79 INVALID_ID = -1, | 84 INVALID_ID = -1, |
80 }; | 85 }; |
81 | 86 |
82 static scoped_refptr<Layer> Create(const LayerSettings& settings); | 87 static scoped_refptr<Layer> Create(const LayerSettings& settings); |
83 | 88 |
84 int id() const { return layer_id_; } | 89 int id() const { return layer_id_; } |
85 | 90 |
86 Layer* RootLayer(); | 91 Layer* RootLayer(); |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 virtual void SetIsMask(bool is_mask) {} | 356 virtual void SetIsMask(bool is_mask) {} |
352 virtual bool IsSuitableForGpuRasterization() const; | 357 virtual bool IsSuitableForGpuRasterization() const; |
353 | 358 |
354 virtual scoped_refptr<base::trace_event::ConvertableToTraceFormat> | 359 virtual scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
355 TakeDebugInfo(); | 360 TakeDebugInfo(); |
356 | 361 |
357 void SetLayerClient(LayerClient* client) { client_ = client; } | 362 void SetLayerClient(LayerClient* client) { client_ = client; } |
358 | 363 |
359 virtual void PushPropertiesTo(LayerImpl* layer); | 364 virtual void PushPropertiesTo(LayerImpl* layer); |
360 | 365 |
| 366 // Sets the type proto::LayerType that should be used for serialization |
| 367 // of the current layer by calling LayerNode::set_type(proto::LayerType). |
| 368 // TODO(nyquist): Start using a forward declared enum class when |
| 369 // https://github.com/google/protobuf/issues/67 has been fixed and rolled in. |
| 370 // This function would preferably instead return a proto::LayerType, but |
| 371 // since that is an enum (the protobuf library does not generate enum |
| 372 // classes), it can't be forward declared. We don't want to include |
| 373 // //cc/proto/layer.pb.h in this header file, as it requires that all |
| 374 // dependent targets would have to be given the config for how to include it. |
| 375 virtual void SetTypeForProtoSerialization(proto::LayerNode* proto) const; |
| 376 |
| 377 // Recursively iterate over this layer and all children and write the |
| 378 // hierarchical structure to the given LayerNode proto. In addition to the |
| 379 // structure itself, the Layer id and type is also written to facilitate |
| 380 // construction of the correct layer on the client. |
| 381 void ToLayerNodeProto(proto::LayerNode* proto) const; |
| 382 |
| 383 // Recursively iterate over the given LayerNode proto and read the structure |
| 384 // into this node and its children. The |layer_map| should be used to look |
| 385 // for previously existing Layers, since they should be re-used between each |
| 386 // hierarchy update. |
| 387 void FromLayerNodeProto(const proto::LayerNode& proto, |
| 388 const LayerIdMap& layer_map); |
| 389 |
361 LayerTreeHost* layer_tree_host() { return layer_tree_host_; } | 390 LayerTreeHost* layer_tree_host() { return layer_tree_host_; } |
362 const LayerTreeHost* layer_tree_host() const { return layer_tree_host_; } | 391 const LayerTreeHost* layer_tree_host() const { return layer_tree_host_; } |
363 | 392 |
364 bool AddAnimation(scoped_ptr<Animation> animation); | 393 bool AddAnimation(scoped_ptr<Animation> animation); |
365 void PauseAnimation(int animation_id, double time_offset); | 394 void PauseAnimation(int animation_id, double time_offset); |
366 void RemoveAnimation(int animation_id); | 395 void RemoveAnimation(int animation_id); |
367 void RemoveAnimation(int animation_id, Animation::TargetProperty property); | 396 void RemoveAnimation(int animation_id, Animation::TargetProperty property); |
368 LayerAnimationController* layer_animation_controller() const { | 397 LayerAnimationController* layer_animation_controller() const { |
369 return layer_animation_controller_.get(); | 398 return layer_animation_controller_.get(); |
370 } | 399 } |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 | 742 |
714 std::vector<FrameTimingRequest> frame_timing_requests_; | 743 std::vector<FrameTimingRequest> frame_timing_requests_; |
715 bool frame_timing_requests_dirty_; | 744 bool frame_timing_requests_dirty_; |
716 | 745 |
717 DISALLOW_COPY_AND_ASSIGN(Layer); | 746 DISALLOW_COPY_AND_ASSIGN(Layer); |
718 }; | 747 }; |
719 | 748 |
720 } // namespace cc | 749 } // namespace cc |
721 | 750 |
722 #endif // CC_LAYERS_LAYER_H_ | 751 #endif // CC_LAYERS_LAYER_H_ |
OLD | NEW |