summaryrefslogtreecommitdiffstats
path: root/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx')
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx88
1 files changed, 88 insertions, 0 deletions
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx
new file mode 100644
index 00000000..dc4fae15
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx
@@ -0,0 +1,88 @@
+/************************************************************************
+
+ Support code for handling various tasks under Win32
+
+ $Id: wintools.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/win/wintools.h>
+
+namespace gfx
+{
+
+HGLRC create_glcontext(HDC dc)
+{
+ HGLRC context = wglCreateContext(dc);
+ if( context )
+ {
+ if( !wglMakeCurrent(dc, context) )
+ {
+ // Destroy context if it fails to bind
+ wglDeleteContext(context);
+ context = NULL;
+ }
+ }
+
+ return context;
+}
+
+int set_pixel_format(HDC dc)
+{
+ PIXELFORMATDESCRIPTOR pixelDesc;
+
+ //
+ // These are the important fields of the PFD
+ //
+ pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pixelDesc.nVersion = 1;
+
+ pixelDesc.dwFlags =
+ PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
+ PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE;
+ pixelDesc.iPixelType = PFD_TYPE_RGBA;
+ pixelDesc.cColorBits = 24;
+ pixelDesc.iLayerType = PFD_MAIN_PLANE;
+
+ //
+ // According to the docs, these can be/are ignored.
+ //
+ pixelDesc.cRedBits = 8;
+ pixelDesc.cRedShift = 16;
+ pixelDesc.cGreenBits = 8;
+ pixelDesc.cGreenShift = 8;
+ pixelDesc.cBlueBits = 8;
+ pixelDesc.cBlueShift = 0;
+ pixelDesc.cAlphaBits = 0;
+ pixelDesc.cAlphaShift = 0;
+ pixelDesc.cAccumBits = 0;
+ pixelDesc.cAccumRedBits = 0;
+ pixelDesc.cAccumGreenBits = 0;
+ pixelDesc.cAccumBlueBits = 0;
+ pixelDesc.cAccumAlphaBits = 0;
+ pixelDesc.cDepthBits = 32;
+ pixelDesc.cStencilBits = 0;
+ pixelDesc.cAuxBuffers = 0;
+ pixelDesc.bReserved = 0;
+ pixelDesc.dwLayerMask = 0;
+ pixelDesc.dwVisibleMask = 0;
+ pixelDesc.dwDamageMask = 0;
+
+
+ int pixel_format = ChoosePixelFormat(dc, &pixelDesc);
+ if( !pixel_format )
+ {
+ // Try and guess a decent default pixel format
+ pixel_format = 1;
+ if( !DescribePixelFormat(dc, pixel_format,
+ sizeof(PIXELFORMATDESCRIPTOR), &pixelDesc) )
+ return NULL;
+ }
+
+ if( !SetPixelFormat(dc, pixel_format, &pixelDesc) )
+ return NULL;
+
+ return pixel_format;
+}
+
+} // namespace gfx