]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/opengl32/opengl32.factor
Merge git://projects.elasticdog.com/git/factor into public
[factor.git] / basis / windows / opengl32 / opengl32.factor
1 ! Copyright (C) 2005, 2006 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.syntax parser namespaces kernel
4 math math.bitwise windows.types windows.types init assocs
5 sequences libc ;
6 IN: windows.opengl32
7
8 ! PIXELFORMATDESCRIPTOR flags
9 : PFD_DOUBLEBUFFER            HEX: 00000001 ; inline
10 : PFD_STEREO                  HEX: 00000002 ; inline
11 : PFD_DRAW_TO_WINDOW          HEX: 00000004 ; inline
12 : PFD_DRAW_TO_BITMAP          HEX: 00000008 ; inline
13 : PFD_SUPPORT_GDI             HEX: 00000010 ; inline
14 : PFD_SUPPORT_OPENGL          HEX: 00000020 ; inline
15 : PFD_GENERIC_FORMAT          HEX: 00000040 ; inline
16 : PFD_NEED_PALETTE            HEX: 00000080 ; inline
17 : PFD_NEED_SYSTEM_PALETTE     HEX: 00000100 ; inline
18 : PFD_SWAP_EXCHANGE           HEX: 00000200 ; inline
19 : PFD_SWAP_COPY               HEX: 00000400 ; inline
20 : PFD_SWAP_LAYER_BUFFERS      HEX: 00000800 ; inline
21 : PFD_GENERIC_ACCELERATED     HEX: 00001000 ; inline
22 : PFD_SUPPORT_DIRECTDRAW      HEX: 00002000 ; inline
23
24 ! PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only
25 : PFD_DEPTH_DONTCARE          HEX: 20000000 ; inline
26 : PFD_DOUBLEBUFFER_DONTCARE   HEX: 40000000 ; inline
27 : PFD_STEREO_DONTCARE         HEX: 80000000 ; inline
28
29 ! pixel types
30 : PFD_TYPE_RGBA        0 ; inline
31 : PFD_TYPE_COLORINDEX  1 ; inline
32  
33 ! layer types
34 : PFD_MAIN_PLANE       0 ; inline
35 : PFD_OVERLAY_PLANE    1 ; inline
36 : PFD_UNDERLAY_PLANE   -1 ; inline
37
38 : LPD_TYPE_RGBA        0 ; inline
39 : LPD_TYPE_COLORINDEX  1 ; inline
40
41 ! wglSwapLayerBuffers flags
42 : WGL_SWAP_MAIN_PLANE     HEX: 00000001 ; inline
43 : WGL_SWAP_OVERLAY1       HEX: 00000002 ; inline
44 : WGL_SWAP_OVERLAY2       HEX: 00000004 ; inline
45 : WGL_SWAP_OVERLAY3       HEX: 00000008 ; inline
46 : WGL_SWAP_OVERLAY4       HEX: 00000010 ; inline
47 : WGL_SWAP_OVERLAY5       HEX: 00000020 ; inline
48 : WGL_SWAP_OVERLAY6       HEX: 00000040 ; inline
49 : WGL_SWAP_OVERLAY7       HEX: 00000080 ; inline
50 : WGL_SWAP_OVERLAY8       HEX: 00000100 ; inline
51 : WGL_SWAP_OVERLAY9       HEX: 00000200 ; inline
52 : WGL_SWAP_OVERLAY10      HEX: 00000400 ; inline
53 : WGL_SWAP_OVERLAY11      HEX: 00000800 ; inline
54 : WGL_SWAP_OVERLAY12      HEX: 00001000 ; inline
55 : WGL_SWAP_OVERLAY13      HEX: 00002000 ; inline
56 : WGL_SWAP_OVERLAY14      HEX: 00004000 ; inline
57 : WGL_SWAP_OVERLAY15      HEX: 00008000 ; inline
58 : WGL_SWAP_UNDERLAY1      HEX: 00010000 ; inline
59 : WGL_SWAP_UNDERLAY2      HEX: 00020000 ; inline
60 : WGL_SWAP_UNDERLAY3      HEX: 00040000 ; inline
61 : WGL_SWAP_UNDERLAY4      HEX: 00080000 ; inline
62 : WGL_SWAP_UNDERLAY5      HEX: 00100000 ; inline
63 : WGL_SWAP_UNDERLAY6      HEX: 00200000 ; inline
64 : WGL_SWAP_UNDERLAY7      HEX: 00400000 ; inline
65 : WGL_SWAP_UNDERLAY8      HEX: 00800000 ; inline
66 : WGL_SWAP_UNDERLAY9      HEX: 01000000 ; inline
67 : WGL_SWAP_UNDERLAY10     HEX: 02000000 ; inline
68 : WGL_SWAP_UNDERLAY11     HEX: 04000000 ; inline
69 : WGL_SWAP_UNDERLAY12     HEX: 08000000 ; inline
70 : WGL_SWAP_UNDERLAY13     HEX: 10000000 ; inline
71 : WGL_SWAP_UNDERLAY14     HEX: 20000000 ; inline
72 : WGL_SWAP_UNDERLAY15     HEX: 40000000 ; inline
73
74 : pfd-dwFlags ( -- n )
75     { PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_DOUBLEBUFFER } flags ;
76
77 ! TODO: compare to http://www.nullterminator.net/opengl32.html
78 : make-pfd ( bits -- pfd )
79     "PIXELFORMATDESCRIPTOR" <c-object>
80     "PIXELFORMATDESCRIPTOR" heap-size over set-PIXELFORMATDESCRIPTOR-nSize
81     1 over set-PIXELFORMATDESCRIPTOR-nVersion
82     pfd-dwFlags over set-PIXELFORMATDESCRIPTOR-dwFlags
83     PFD_TYPE_RGBA over set-PIXELFORMATDESCRIPTOR-iPixelType
84     [ set-PIXELFORMATDESCRIPTOR-cColorBits ] keep
85     16 over set-PIXELFORMATDESCRIPTOR-cDepthBits
86     PFD_MAIN_PLANE over set-PIXELFORMATDESCRIPTOR-dwLayerMask ;
87
88
89 LIBRARY: gl
90
91
92 ! FUNCTION: int ReleaseDC ( HWND hWnd, HDC hDC ) ;
93 ! FUNCTION: HDC ResetDC ( HDC hdc, DEVMODE* lpInitData ) ;
94 ! FUNCTION: BOOL RestoreDC ( HDC hdc, int nSavedDC ) ;
95 ! FUNCTION: int SaveDC( HDC hDC ) ;
96 ! FUNCTION: HGDIOBJ SelectObject ( HDC hDC, HGDIOBJ hgdiobj ) ;
97
98 FUNCTION: HGLRC wglCreateContext ( HDC hDC ) ;
99 FUNCTION: BOOL wglDeleteContext ( HGLRC hRC ) ;
100 FUNCTION: BOOL wglMakeCurrent ( HDC hDC, HGLRC hglrc ) ;
101 FUNCTION: HGLRC wglGetCurrentContext ( ) ;
102 FUNCTION: void* wglGetProcAddress ( char* name ) ;