• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_UI_RESOURCE_LAYER_H_
6 #define CC_LAYERS_UI_RESOURCE_LAYER_H_
7 
8 #include "base/memory/scoped_ptr.h"
9 #include "cc/base/cc_export.h"
10 #include "cc/layers/layer.h"
11 #include "cc/resources/ui_resource_client.h"
12 #include "ui/gfx/rect.h"
13 
14 namespace cc {
15 
16 class LayerTreeHost;
17 class ScopedUIResource;
18 
19 class CC_EXPORT UIResourceLayer : public Layer {
20  public:
21   static scoped_refptr<UIResourceLayer> Create();
22 
23   virtual bool DrawsContent() const OVERRIDE;
24 
25   virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
26 
27   virtual void SetLayerTreeHost(LayerTreeHost* host) OVERRIDE;
28 
29   void SetBitmap(const SkBitmap& skbitmap);
30 
31   // An alternative way of setting the resource to allow for sharing.
32   void SetUIResourceId(UIResourceId resource_id);
33 
34   // Sets a UV transform to be used at draw time. Defaults to (0, 0) and (1, 1).
35   void SetUV(const gfx::PointF& top_left, const gfx::PointF& bottom_right);
36 
37   // Sets an opacity value per vertex. It will be multiplied by the layer
38   // opacity value.
39   void SetVertexOpacity(float bottom_left,
40                         float top_left,
41                         float top_right,
42                         float bottom_right);
43 
44   class UIResourceHolder {
45    public:
46     virtual UIResourceId id() = 0;
47     virtual ~UIResourceHolder();
48   };
49 
50  protected:
51   UIResourceLayer();
52   virtual ~UIResourceLayer();
53 
54   scoped_ptr<UIResourceHolder> ui_resource_holder_;
55   SkBitmap bitmap_;
56 
57   gfx::PointF uv_top_left_;
58   gfx::PointF uv_bottom_right_;
59   float vertex_opacity_[4];
60 
61  private:
62   virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
63       OVERRIDE;
64   void RecreateUIResourceHolder();
65 
66 
67 
68   DISALLOW_COPY_AND_ASSIGN(UIResourceLayer);
69 };
70 
71 }  // namespace cc
72 
73 #endif  // CC_LAYERS_UI_RESOURCE_LAYER_H_
74