io_surface_draw_quad.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_QUADS_IO_SURFACE_DRAW_QUAD_H_
6#define CC_QUADS_IO_SURFACE_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/size.h"
12
13namespace cc {
14
15class CC_EXPORT IOSurfaceDrawQuad : public DrawQuad {
16 public:
17  enum Orientation {
18    FLIPPED,
19    UNFLIPPED
20  };
21
22  static scoped_ptr<IOSurfaceDrawQuad> Create();
23
24  void SetNew(const SharedQuadState* shared_quad_state,
25              gfx::Rect rect,
26              gfx::Rect opaque_rect,
27              gfx::Size io_surface_size,
28              unsigned io_surface_texture_id,
29              Orientation orientation);
30
31  void SetAll(const SharedQuadState* shared_quad_state,
32              gfx::Rect rect,
33              gfx::Rect opaque_rect,
34              gfx::Rect visible_rect,
35              bool needs_blending,
36              gfx::Size io_surface_size,
37              unsigned io_surface_texture_id,
38              Orientation orientation);
39
40  gfx::Size io_surface_size;
41  unsigned io_surface_texture_id;
42  Orientation orientation;
43
44  virtual void IterateResources(const ResourceIteratorCallback& callback)
45      OVERRIDE;
46
47  static const IOSurfaceDrawQuad* MaterialCast(const DrawQuad*);
48 private:
49  IOSurfaceDrawQuad();
50};
51
52}
53
54#endif  // CC_QUADS_IO_SURFACE_DRAW_QUAD_H_
55