- add sources.
[platform/framework/web/crosswalk.git] / src / ui / gl / gl_surface_cgl.h
1 // Copyright (c) 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 UI_GL_GL_SURFACE_CGL_H_
6 #define UI_GL_GL_SURFACE_CGL_H_
7
8 #include "ui/gfx/size.h"
9 #include "ui/gl/gl_surface.h"
10
11 namespace gfx {
12
13 // Base class for CGL surfaces.
14 class GLSurfaceCGL : public GLSurface {
15  public:
16   GLSurfaceCGL();
17
18   static bool InitializeOneOff();
19   static void* GetPixelFormat();
20
21  protected:
22   virtual ~GLSurfaceCGL();
23
24  private:
25   DISALLOW_COPY_AND_ASSIGN(GLSurfaceCGL);
26 };
27
28 // A "no-op" surface. It is not required that a CGLContextObj have an
29 // associated drawable (pbuffer or fullscreen context) in order to be
30 // made current. Everywhere this surface type is used, we allocate an
31 // FBO at the user level as the drawable of the associated context.
32 class GL_EXPORT NoOpGLSurfaceCGL : public GLSurfaceCGL {
33  public:
34   explicit NoOpGLSurfaceCGL(const gfx::Size& size);
35
36   // Implement GLSurface.
37   virtual bool Initialize() OVERRIDE;
38   virtual void Destroy() OVERRIDE;
39   virtual bool IsOffscreen() OVERRIDE;
40   virtual bool SwapBuffers() OVERRIDE;
41   virtual gfx::Size GetSize() OVERRIDE;
42   virtual void* GetHandle() OVERRIDE;
43   virtual void* GetDisplay() OVERRIDE;
44
45  protected:
46   virtual ~NoOpGLSurfaceCGL();
47
48  private:
49   gfx::Size size_;
50
51   DISALLOW_COPY_AND_ASSIGN(NoOpGLSurfaceCGL);
52 };
53
54 }  // namespace gfx
55
56 #endif  // UI_GL_GL_SURFACE_CGL_H_