Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ui / gl / gl_image_io_surface.h
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 UI_GL_GL_IMAGE_IO_SURFACE_H_
6 #define UI_GL_GL_IMAGE_IO_SURFACE_H_
7
8 #include <IOSurface/IOSurfaceAPI.h>
9
10 #include "base/mac/scoped_cftyperef.h"
11 #include "ui/gfx/gpu_memory_buffer.h"
12 #include "ui/gl/gl_image.h"
13
14 namespace gfx {
15
16 class GL_EXPORT GLImageIOSurface : public GLImage {
17  public:
18   explicit GLImageIOSurface(const gfx::Size& size);
19
20   bool Initialize(IOSurfaceRef io_surface);
21
22   // Overridden from GLImage:
23   virtual void Destroy(bool have_context) OVERRIDE;
24   virtual gfx::Size GetSize() OVERRIDE;
25   virtual bool BindTexImage(unsigned target) OVERRIDE;
26   virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
27   virtual bool CopyTexImage(unsigned target) OVERRIDE;
28   virtual void WillUseTexImage() OVERRIDE {}
29   virtual void DidUseTexImage() OVERRIDE {}
30   virtual void WillModifyTexImage() OVERRIDE {}
31   virtual void DidModifyTexImage() OVERRIDE {}
32   virtual bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget,
33                                     int z_order,
34                                     OverlayTransform transform,
35                                     const Rect& bounds_rect,
36                                     const RectF& crop_rect) OVERRIDE;
37
38  protected:
39   virtual ~GLImageIOSurface();
40
41  private:
42   base::ScopedCFTypeRef<IOSurfaceRef> io_surface_;
43   const gfx::Size size_;
44
45   DISALLOW_COPY_AND_ASSIGN(GLImageIOSurface);
46 };
47
48 }  // namespace gfx
49
50 #endif  // UI_GL_GL_IMAGE_IO_SURFACE_H_