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 11namespace gfx { 12 13// Base interface for WGL surfaces. 14class 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. 30class 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. 53class 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