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 13 namespace cc { 14 15 class 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_resource_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_resource_id, 38 Orientation orientation); 39 40 gfx::Size io_surface_size; 41 unsigned io_surface_resource_id; 42 Orientation orientation; 43 44 virtual void IterateResources(const ResourceIteratorCallback& callback) 45 OVERRIDE; 46 47 static const IOSurfaceDrawQuad* MaterialCast(const DrawQuad*); 48 49 private: 50 IOSurfaceDrawQuad(); 51 virtual void ExtendValue(base::DictionaryValue* value) const OVERRIDE; 52 }; 53 54 } // namespace cc 55 56 #endif // CC_QUADS_IO_SURFACE_DRAW_QUAD_H_ 57