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