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_WGL_H_
      6 #define UI_GL_GL_SURFACE_WGL_H_
      7 
      8 #include "ui/gfx/native_widget_types.h"
      9 #include "ui/gl/gl_surface.h"
     10 
     11 namespace gfx {
     12 
     13 // Base interface for WGL surfaces.
     14 class GLSurfaceWGL : public GLSurface {
     15  public:
     16   GLSurfaceWGL();
     17   virtual ~GLSurfaceWGL();
     18 
     19   // Implement GLSurface.
     20   virtual void* GetDisplay();
     21 
     22   static bool InitializeOneOff();
     23   static HDC GetDisplayDC();
     24 
     25  private:
     26   DISALLOW_COPY_AND_ASSIGN(GLSurfaceWGL);
     27 };
     28 
     29 // A surface used to render to a view.
     30 class NativeViewGLSurfaceWGL : public GLSurfaceWGL {
     31  public:
     32   explicit NativeViewGLSurfaceWGL(gfx::AcceleratedWidget window);
     33   virtual ~NativeViewGLSurfaceWGL();
     34 
     35   // Implement GLSurface.
     36   virtual bool Initialize();
     37   virtual void Destroy();
     38   virtual bool IsOffscreen();
     39   virtual bool SwapBuffers();
     40   virtual gfx::Size GetSize();
     41   virtual void* GetHandle();
     42 
     43  private:
     44   gfx::AcceleratedWidget window_;
     45   gfx::AcceleratedWidget child_window_;
     46   HDC device_context_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceWGL);
     49 };
     50 
     51 
     52 // A surface used to render to an offscreen pbuffer.
     53 class PbufferGLSurfaceWGL : public GLSurfaceWGL {
     54  public:
     55   explicit PbufferGLSurfaceWGL(const gfx::Size& size);
     56   virtual ~PbufferGLSurfaceWGL();
     57 
     58   // Implement GLSurface.
     59   virtual bool Initialize();
     60   virtual void Destroy();
     61   virtual bool IsOffscreen();
     62   virtual bool SwapBuffers();
     63   virtual gfx::Size GetSize();
     64   virtual void* GetHandle();
     65 
     66  private:
     67   gfx::Size size_;
     68   HDC device_context_;
     69   void* pbuffer_;
     70 
     71   DISALLOW_COPY_AND_ASSIGN(PbufferGLSurfaceWGL);
     72 };
     73 
     74 }  // namespace gfx
     75 
     76 #endif  // UI_GL_GL_SURFACE_WGL_H_
     77