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(RenderPass* render_pass, 32 const OcclusionTracker<LayerImpl>& occlusion_tracker, 33 AppendQuadsData* append_quads_data) OVERRIDE; 34 35 virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE; 36 37 void set_skips_draw(bool skips_draw) { skips_draw_ = skips_draw; } 38 void SetTilingData(const LayerTilingData& tiler); 39 void PushTileProperties(int i, 40 int j, 41 ResourceProvider::ResourceId resource, 42 bool contents_swizzled); 43 void PushInvalidTile(int i, int j); 44 45 virtual SimpleEnclosedRegion 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::debug::TracedValue* dict) 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