Home | History | Annotate | Download | only in layers
      1 // Copyright 2011 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_TILED_LAYER_IMPL_H_
      6 #define CC_LAYERS_TILED_LAYER_IMPL_H_
      7 
      8 #include <string>
      9 
     10 #include "cc/base/cc_export.h"
     11 #include "cc/layers/layer_impl.h"
     12 
     13 namespace cc {
     14 
     15 class LayerTilingData;
     16 class DrawableTile;
     17 
     18 class CC_EXPORT TiledLayerImpl : public LayerImpl {
     19  public:
     20   static scoped_ptr<TiledLayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
     21     return make_scoped_ptr(new TiledLayerImpl(tree_impl, id));
     22   }
     23   virtual ~TiledLayerImpl();
     24 
     25   virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
     26       OVERRIDE;
     27   virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
     28 
     29   virtual bool WillDraw(DrawMode draw_mode,
     30                         ResourceProvider* resource_provider) OVERRIDE;
     31   virtual void AppendQuads(QuadSink* quad_sink,
     32                            AppendQuadsData* append_quads_data) OVERRIDE;
     33 
     34   virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE;
     35 
     36   void set_skips_draw(bool skips_draw) { skips_draw_ = skips_draw; }
     37   void SetTilingData(const LayerTilingData& tiler);
     38   void PushTileProperties(int i,
     39                           int j,
     40                           ResourceProvider::ResourceId resource,
     41                           const gfx::Rect& opaque_rect,
     42                           bool contents_swizzled);
     43   void PushInvalidTile(int i, int j);
     44 
     45   virtual Region VisibleContentOpaqueRegion() const OVERRIDE;
     46   virtual void ReleaseResources() OVERRIDE;
     47 
     48   const LayerTilingData* TilingForTesting() const { return tiler_.get(); }
     49 
     50   virtual size_t GPUMemoryUsageInBytes() const OVERRIDE;
     51 
     52  protected:
     53   TiledLayerImpl(LayerTreeImpl* tree_impl, int id);
     54   // Exposed for testing.
     55   bool HasTileAt(int i, int j) const;
     56   bool HasResourceIdForTileAt(int i, int j) const;
     57 
     58   virtual void GetDebugBorderProperties(SkColor* color, float* width) const
     59       OVERRIDE;
     60   virtual void AsValueInto(base::DictionaryValue* state) const OVERRIDE;
     61 
     62  private:
     63   virtual const char* LayerTypeAsString() const OVERRIDE;
     64 
     65   DrawableTile* TileAt(int i, int j) const;
     66   DrawableTile* CreateTile(int i, int j);
     67 
     68   bool skips_draw_;
     69 
     70   scoped_ptr<LayerTilingData> tiler_;
     71 
     72   DISALLOW_COPY_AND_ASSIGN(TiledLayerImpl);
     73 };
     74 
     75 }  // namespace cc
     76 
     77 #endif  // CC_LAYERS_TILED_LAYER_IMPL_H_
     78