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_QUADS_TEXTURE_DRAW_QUAD_H_
6#define CC_QUADS_TEXTURE_DRAW_QUAD_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "cc/base/cc_export.h"
10#include "cc/quads/draw_quad.h"
11#include "ui/gfx/rect_f.h"
12
13namespace cc {
14
15class CC_EXPORT TextureDrawQuad : public DrawQuad {
16 public:
17  static scoped_ptr<TextureDrawQuad> Create();
18
19  void SetNew(const SharedQuadState* shared_quad_state,
20              gfx::Rect rect,
21              gfx::Rect opaque_rect,
22              unsigned resource_id,
23              bool premultiplied_alpha,
24              gfx::PointF uv_top_left,
25              gfx::PointF uv_bottom_right,
26              SkColor background_color,
27              const float vertex_opacity[4],
28              bool flipped);
29
30  void SetAll(const SharedQuadState* shared_quad_state,
31              gfx::Rect rect,
32              gfx::Rect opaque_rect,
33              gfx::Rect visible_rect,
34              bool needs_blending,
35              unsigned resource_id,
36              bool premultiplied_alpha,
37              gfx::PointF uv_top_left,
38              gfx::PointF uv_bottom_right,
39              SkColor background_color,
40              const float vertex_opacity[4],
41              bool flipped);
42
43  unsigned resource_id;
44  bool premultiplied_alpha;
45  gfx::PointF uv_top_left;
46  gfx::PointF uv_bottom_right;
47  SkColor background_color;
48  float vertex_opacity[4];
49  bool flipped;
50
51  virtual void IterateResources(const ResourceIteratorCallback& callback)
52      OVERRIDE;
53
54  static const TextureDrawQuad* MaterialCast(const DrawQuad*);
55
56  bool PerformClipping();
57
58 private:
59  TextureDrawQuad();
60  virtual void ExtendValue(base::DictionaryValue* value) const OVERRIDE;
61};
62
63}  // namespace cc
64
65#endif  // CC_QUADS_TEXTURE_DRAW_QUAD_H_
66