Home | History | Annotate | Download | only in gl
      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_
     57