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