1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_LAYERS_PICTURE_LAYER_H_ 6 #define CC_LAYERS_PICTURE_LAYER_H_ 7 8 #include "cc/base/invalidation_region.h" 9 #include "cc/debug/devtools_instrumentation.h" 10 #include "cc/layers/layer.h" 11 #include "cc/resources/picture_pile.h" 12 #include "cc/trees/occlusion_tracker.h" 13 14 namespace cc { 15 16 class ContentLayerClient; 17 class ResourceUpdateQueue; 18 19 class CC_EXPORT PictureLayer : public Layer { 20 public: 21 static scoped_refptr<PictureLayer> Create(ContentLayerClient* client); 22 23 void ClearClient() { client_ = NULL; } 24 25 // Layer interface. 26 virtual bool DrawsContent() const OVERRIDE; 27 virtual scoped_ptr<LayerImpl> CreateLayerImpl( 28 LayerTreeImpl* tree_impl) OVERRIDE; 29 virtual void SetLayerTreeHost(LayerTreeHost* host) OVERRIDE; 30 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 31 virtual void SetNeedsDisplayRect(const gfx::RectF& layer_rect) OVERRIDE; 32 virtual bool Update( 33 ResourceUpdateQueue* queue, 34 const OcclusionTracker* occlusion) OVERRIDE; 35 virtual void SetIsMask(bool is_mask) OVERRIDE; 36 virtual bool SupportsLCDText() const OVERRIDE; 37 38 protected: 39 explicit PictureLayer(ContentLayerClient* client); 40 virtual ~PictureLayer(); 41 42 private: 43 ContentLayerClient* client_; 44 scoped_refptr<PicturePile> pile_; 45 devtools_instrumentation:: 46 ScopedLayerObjectTracker instrumentation_object_tracker_; 47 // Invalidation to use the next time update is called. 48 InvalidationRegion pending_invalidation_; 49 // Invalidation from the last time update was called. 50 Region pile_invalidation_; 51 bool is_mask_; 52 53 DISALLOW_COPY_AND_ASSIGN(PictureLayer); 54 }; 55 56 } // namespace cc 57 58 #endif // CC_LAYERS_PICTURE_LAYER_H_ 59