| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef UI_GL_GL_SURFACE_WGL_H_ | 
 | #define UI_GL_GL_SURFACE_WGL_H_ | 
 |  | 
 | #include "ui/gfx/native_widget_types.h" | 
 | #include "ui/gl/gl_surface.h" | 
 |  | 
 | namespace gfx { | 
 |  | 
 | // Base interface for WGL surfaces. | 
 | class GLSurfaceWGL : public GLSurface { | 
 |  public: | 
 |   GLSurfaceWGL(); | 
 |   virtual ~GLSurfaceWGL(); | 
 |  | 
 |   // Implement GLSurface. | 
 |   virtual void* GetDisplay(); | 
 |  | 
 |   static bool InitializeOneOff(); | 
 |   static HDC GetDisplayDC(); | 
 |  | 
 |  private: | 
 |   DISALLOW_COPY_AND_ASSIGN(GLSurfaceWGL); | 
 | }; | 
 |  | 
 | // A surface used to render to a view. | 
 | class NativeViewGLSurfaceWGL : public GLSurfaceWGL { | 
 |  public: | 
 |   explicit NativeViewGLSurfaceWGL(gfx::AcceleratedWidget window); | 
 |   virtual ~NativeViewGLSurfaceWGL(); | 
 |  | 
 |   // Implement GLSurface. | 
 |   virtual bool Initialize(); | 
 |   virtual void Destroy(); | 
 |   virtual bool IsOffscreen(); | 
 |   virtual bool SwapBuffers(); | 
 |   virtual gfx::Size GetSize(); | 
 |   virtual void* GetHandle(); | 
 |  | 
 |  private: | 
 |   gfx::AcceleratedWidget window_; | 
 |   gfx::AcceleratedWidget child_window_; | 
 |   HDC device_context_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceWGL); | 
 | }; | 
 |  | 
 |  | 
 | // A surface used to render to an offscreen pbuffer. | 
 | class PbufferGLSurfaceWGL : public GLSurfaceWGL { | 
 |  public: | 
 |   explicit PbufferGLSurfaceWGL(const gfx::Size& size); | 
 |   virtual ~PbufferGLSurfaceWGL(); | 
 |  | 
 |   // Implement GLSurface. | 
 |   virtual bool Initialize(); | 
 |   virtual void Destroy(); | 
 |   virtual bool IsOffscreen(); | 
 |   virtual bool SwapBuffers(); | 
 |   virtual gfx::Size GetSize(); | 
 |   virtual void* GetHandle(); | 
 |  | 
 |  private: | 
 |   gfx::Size size_; | 
 |   HDC device_context_; | 
 |   void* pbuffer_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(PbufferGLSurfaceWGL); | 
 | }; | 
 |  | 
 | }  // namespace gfx | 
 |  | 
 | #endif  // UI_GL_GL_SURFACE_WGL_H_ |