summaryrefslogtreecommitdiffstats
path: root/ui/gl/gl_surface_wgl.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/gl/gl_surface_wgl.h')
-rw-r--r--ui/gl/gl_surface_wgl.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/ui/gl/gl_surface_wgl.h b/ui/gl/gl_surface_wgl.h
new file mode 100644
index 0000000..6e4f0cd
--- /dev/null
+++ b/ui/gl/gl_surface_wgl.h
@@ -0,0 +1,77 @@
+// 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_
+#pragma once
+
+#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_