Home | History | Annotate | Download | only in layers
      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