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_IMPL_H_ 6#define CC_LAYERS_UI_RESOURCE_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 "cc/resources/ui_resource_client.h" 14#include "ui/gfx/rect.h" 15#include "ui/gfx/size.h" 16 17namespace base { 18class DictionaryValue; 19} 20 21namespace cc { 22 23class CC_EXPORT UIResourceLayerImpl : public LayerImpl { 24 public: 25 static scoped_ptr<UIResourceLayerImpl> Create(LayerTreeImpl* tree_impl, 26 int id) { 27 return make_scoped_ptr(new UIResourceLayerImpl(tree_impl, id)); 28 } 29 virtual ~UIResourceLayerImpl(); 30 31 void SetUIResourceId(UIResourceId uid); 32 33 void SetImageBounds(const gfx::Size& image_bounds); 34 35 // Sets a UV transform to be used at draw time. Defaults to (0, 0) and (1, 1). 36 void SetUV(const gfx::PointF& top_left, const gfx::PointF& bottom_right); 37 38 // Sets an opacity value per vertex. It will be multiplied by the layer 39 // opacity value. 40 void SetVertexOpacity(const float vertex_opacity[4]); 41 42 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) 43 OVERRIDE; 44 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 45 46 virtual bool WillDraw(DrawMode draw_mode, 47 ResourceProvider* resource_provider) OVERRIDE; 48 virtual void AppendQuads(RenderPass* render_pass, 49 const OcclusionTracker<LayerImpl>& occlusion_tracker, 50 AppendQuadsData* append_quads_data) OVERRIDE; 51 52 virtual base::DictionaryValue* LayerTreeAsJson() const OVERRIDE; 53 54 protected: 55 UIResourceLayerImpl(LayerTreeImpl* tree_impl, int id); 56 57 // The size of the resource bitmap in pixels. 58 gfx::Size image_bounds_; 59 60 UIResourceId ui_resource_id_; 61 62 gfx::PointF uv_top_left_; 63 gfx::PointF uv_bottom_right_; 64 float vertex_opacity_[4]; 65 66 private: 67 virtual const char* LayerTypeAsString() const OVERRIDE; 68 69 DISALLOW_COPY_AND_ASSIGN(UIResourceLayerImpl); 70}; 71 72} // namespace cc 73 74#endif // CC_LAYERS_UI_RESOURCE_LAYER_IMPL_H_ 75