nine_patch_layer_impl.h revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
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 16namespace base { 17class DictionaryValue; 18} 19 20namespace cc { 21 22class 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