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_NINE_PATCH_LAYER_IMPL_H_ 6 #define CC_LAYERS_NINE_PATCH_LAYER_IMPL_H_ 7 8 #include <string> 9 10 #include "cc/base/cc_export.h" 11 #include "cc/layers/layer_impl.h" 12 #include "cc/resources/resource_provider.h" 13 #include "ui/gfx/rect.h" 14 #include "ui/gfx/size.h" 15 16 namespace base { 17 class DictionaryValue; 18 } 19 20 namespace cc { 21 22 class CC_EXPORT NinePatchLayerImpl : public LayerImpl { 23 public: 24 static scoped_ptr<NinePatchLayerImpl> Create(LayerTreeImpl* tree_impl, 25 int id) { 26 return make_scoped_ptr(new NinePatchLayerImpl(tree_impl, id)); 27 } 28 virtual ~NinePatchLayerImpl(); 29 30 void SetResourceId(unsigned id) { resource_id_ = id; } 31 void SetLayout(gfx::Size image_bounds, gfx::Rect aperture); 32 33 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) 34 OVERRIDE; 35 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 36 37 virtual bool WillDraw(DrawMode draw_mode, 38 ResourceProvider* resource_provider) OVERRIDE; 39 virtual void AppendQuads(QuadSink* quad_sink, 40 AppendQuadsData* append_quads_data) OVERRIDE; 41 virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE; 42 virtual void DidLoseOutputSurface() OVERRIDE; 43 44 virtual base::DictionaryValue* LayerTreeAsJson() const OVERRIDE; 45 46 protected: 47 NinePatchLayerImpl(LayerTreeImpl* tree_impl, int id); 48 49 private: 50 virtual const char* LayerTypeAsString() const OVERRIDE; 51 52 // The size of the NinePatch bitmap in pixels. 53 gfx::Size image_bounds_; 54 55 // The transparent center region that shows the parent layer's contents in 56 // image space. 57 gfx::Rect image_aperture_; 58 59 ResourceProvider::ResourceId resource_id_; 60 61 DISALLOW_COPY_AND_ASSIGN(NinePatchLayerImpl); 62 }; 63 64 } // namespace cc 65 66 #endif // CC_LAYERS_NINE_PATCH_LAYER_IMPL_H_ 67