ruby-glfw 0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. data/README +1 -0
  2. data/README.API +73 -0
  3. data/Rakefile +120 -0
  4. data/examples/boing.rb +519 -0
  5. data/examples/gears.rb +327 -0
  6. data/examples/keytest.rb +117 -0
  7. data/examples/listmodes.rb +20 -0
  8. data/examples/mipmaps.rb +104 -0
  9. data/examples/mipmaps.tga +0 -0
  10. data/examples/particles.rb +837 -0
  11. data/examples/pong3d.rb +741 -0
  12. data/examples/pong3d_field.tga +0 -0
  13. data/examples/pong3d_instr.tga +0 -0
  14. data/examples/pong3d_menu.tga +0 -0
  15. data/examples/pong3d_title.tga +0 -0
  16. data/examples/pong3d_winner1.tga +0 -0
  17. data/examples/pong3d_winner2.tga +0 -0
  18. data/examples/splitview.rb +432 -0
  19. data/examples/triangle.rb +89 -0
  20. data/examples/wave.rb +294 -0
  21. data/ext/glfw/glfw.c +1094 -0
  22. data/ext/glfw/mkrf_conf.rb +70 -0
  23. data/glfw-src/Makefile +220 -0
  24. data/glfw-src/compile.ami +61 -0
  25. data/glfw-src/compile.bat +217 -0
  26. data/glfw-src/compile.sh +607 -0
  27. data/glfw-src/docs/Makefile +57 -0
  28. data/glfw-src/docs/Reference.pdf +0 -0
  29. data/glfw-src/docs/UsersGuide.pdf +0 -0
  30. data/glfw-src/docs/cleanup.bat +22 -0
  31. data/glfw-src/docs/glfwdoc.sty +80 -0
  32. data/glfw-src/docs/glfwrm.tex +3034 -0
  33. data/glfw-src/docs/glfwug.tex +2024 -0
  34. data/glfw-src/docs/readme.txt +80 -0
  35. data/glfw-src/examples/Makefile.amigaos.gcc +70 -0
  36. data/glfw-src/examples/Makefile.amigaos.vbcc +70 -0
  37. data/glfw-src/examples/Makefile.dos.djgpp +71 -0
  38. data/glfw-src/examples/Makefile.macosx.gcc +96 -0
  39. data/glfw-src/examples/Makefile.win32.bcc +75 -0
  40. data/glfw-src/examples/Makefile.win32.cross-mgw +79 -0
  41. data/glfw-src/examples/Makefile.win32.cygwin +79 -0
  42. data/glfw-src/examples/Makefile.win32.lcc +74 -0
  43. data/glfw-src/examples/Makefile.win32.mgw +75 -0
  44. data/glfw-src/examples/Makefile.win32.msvc +74 -0
  45. data/glfw-src/examples/Makefile.win32.ow +74 -0
  46. data/glfw-src/examples/Makefile.win32.pellesc +74 -0
  47. data/glfw-src/examples/Makefile.x11.in +54 -0
  48. data/glfw-src/examples/boing.c +606 -0
  49. data/glfw-src/examples/bundle.sh +46 -0
  50. data/glfw-src/examples/gears.c +382 -0
  51. data/glfw-src/examples/keytest.c +264 -0
  52. data/glfw-src/examples/listmodes.c +48 -0
  53. data/glfw-src/examples/mipmaps.c +126 -0
  54. data/glfw-src/examples/mipmaps.tga +0 -0
  55. data/glfw-src/examples/mtbench.c +301 -0
  56. data/glfw-src/examples/mthello.c +48 -0
  57. data/glfw-src/examples/particles.c +1148 -0
  58. data/glfw-src/examples/pong3d.c +839 -0
  59. data/glfw-src/examples/pong3d_field.tga +0 -0
  60. data/glfw-src/examples/pong3d_instr.tga +0 -0
  61. data/glfw-src/examples/pong3d_menu.tga +0 -0
  62. data/glfw-src/examples/pong3d_title.tga +0 -0
  63. data/glfw-src/examples/pong3d_winner1.tga +0 -0
  64. data/glfw-src/examples/pong3d_winner2.tga +0 -0
  65. data/glfw-src/examples/splitview.c +506 -0
  66. data/glfw-src/examples/triangle.c +108 -0
  67. data/glfw-src/examples/wave.c +397 -0
  68. data/glfw-src/images/opengl.gif +0 -0
  69. data/glfw-src/images/osicert.gif +0 -0
  70. data/glfw-src/include/GL/glfw.h +486 -0
  71. data/glfw-src/lib/amigaos/Makefile.amigaos.gcc +128 -0
  72. data/glfw-src/lib/amigaos/Makefile.amigaos.vbcc +128 -0
  73. data/glfw-src/lib/amigaos/SDI_compiler.h +94 -0
  74. data/glfw-src/lib/amigaos/amigaos_enable.c +51 -0
  75. data/glfw-src/lib/amigaos/amigaos_fullscreen.c +319 -0
  76. data/glfw-src/lib/amigaos/amigaos_glext.c +61 -0
  77. data/glfw-src/lib/amigaos/amigaos_init.c +284 -0
  78. data/glfw-src/lib/amigaos/amigaos_joystick.c +359 -0
  79. data/glfw-src/lib/amigaos/amigaos_thread.c +494 -0
  80. data/glfw-src/lib/amigaos/amigaos_time.c +206 -0
  81. data/glfw-src/lib/amigaos/amigaos_window.c +830 -0
  82. data/glfw-src/lib/amigaos/platform.h +337 -0
  83. data/glfw-src/lib/dos/Makefile.dos.djgpp +146 -0
  84. data/glfw-src/lib/dos/dos_enable.c +51 -0
  85. data/glfw-src/lib/dos/dos_events.c +173 -0
  86. data/glfw-src/lib/dos/dos_fullscreen.c +101 -0
  87. data/glfw-src/lib/dos/dos_glext.c +59 -0
  88. data/glfw-src/lib/dos/dos_init.c +105 -0
  89. data/glfw-src/lib/dos/dos_irq.s +246 -0
  90. data/glfw-src/lib/dos/dos_joystick.c +94 -0
  91. data/glfw-src/lib/dos/dos_keyboard.c +694 -0
  92. data/glfw-src/lib/dos/dos_mouse.c +337 -0
  93. data/glfw-src/lib/dos/dos_thread.c +267 -0
  94. data/glfw-src/lib/dos/dos_time.c +309 -0
  95. data/glfw-src/lib/dos/dos_window.c +563 -0
  96. data/glfw-src/lib/dos/platform.h +341 -0
  97. data/glfw-src/lib/enable.c +295 -0
  98. data/glfw-src/lib/fullscreen.c +95 -0
  99. data/glfw-src/lib/glext.c +201 -0
  100. data/glfw-src/lib/image.c +629 -0
  101. data/glfw-src/lib/init.c +108 -0
  102. data/glfw-src/lib/input.c +280 -0
  103. data/glfw-src/lib/internal.h +210 -0
  104. data/glfw-src/lib/joystick.c +101 -0
  105. data/glfw-src/lib/macosx/Makefile.macosx.gcc +172 -0
  106. data/glfw-src/lib/macosx/Makefile.macosx.gcc.universal +166 -0
  107. data/glfw-src/lib/macosx/libglfw.pc.in +11 -0
  108. data/glfw-src/lib/macosx/macosx_enable.c +42 -0
  109. data/glfw-src/lib/macosx/macosx_fullscreen.c +126 -0
  110. data/glfw-src/lib/macosx/macosx_glext.c +52 -0
  111. data/glfw-src/lib/macosx/macosx_init.c +194 -0
  112. data/glfw-src/lib/macosx/macosx_joystick.c +50 -0
  113. data/glfw-src/lib/macosx/macosx_thread.c +414 -0
  114. data/glfw-src/lib/macosx/macosx_time.c +112 -0
  115. data/glfw-src/lib/macosx/macosx_window.c +1279 -0
  116. data/glfw-src/lib/macosx/platform.h +349 -0
  117. data/glfw-src/lib/stream.c +194 -0
  118. data/glfw-src/lib/tga.c +405 -0
  119. data/glfw-src/lib/thread.c +340 -0
  120. data/glfw-src/lib/time.c +83 -0
  121. data/glfw-src/lib/win32/Makefile.win32.bcc +265 -0
  122. data/glfw-src/lib/win32/Makefile.win32.cross-mgw +274 -0
  123. data/glfw-src/lib/win32/Makefile.win32.cygwin +279 -0
  124. data/glfw-src/lib/win32/Makefile.win32.lcc +246 -0
  125. data/glfw-src/lib/win32/Makefile.win32.mgw +243 -0
  126. data/glfw-src/lib/win32/Makefile.win32.msvc +242 -0
  127. data/glfw-src/lib/win32/Makefile.win32.ow +242 -0
  128. data/glfw-src/lib/win32/Makefile.win32.pellesc +242 -0
  129. data/glfw-src/lib/win32/glfwdll.def +67 -0
  130. data/glfw-src/lib/win32/glfwdll_mgw1.def +67 -0
  131. data/glfw-src/lib/win32/glfwdll_mgw2.def +67 -0
  132. data/glfw-src/lib/win32/glfwdll_pellesc.def +65 -0
  133. data/glfw-src/lib/win32/libglfw.pc.in +11 -0
  134. data/glfw-src/lib/win32/platform.h +474 -0
  135. data/glfw-src/lib/win32/win32_dllmain.c +60 -0
  136. data/glfw-src/lib/win32/win32_enable.c +155 -0
  137. data/glfw-src/lib/win32/win32_fullscreen.c +317 -0
  138. data/glfw-src/lib/win32/win32_glext.c +85 -0
  139. data/glfw-src/lib/win32/win32_init.c +356 -0
  140. data/glfw-src/lib/win32/win32_joystick.c +234 -0
  141. data/glfw-src/lib/win32/win32_thread.c +511 -0
  142. data/glfw-src/lib/win32/win32_time.c +146 -0
  143. data/glfw-src/lib/win32/win32_window.c +1714 -0
  144. data/glfw-src/lib/window.c +727 -0
  145. data/glfw-src/lib/x11/Makefile.x11.in +243 -0
  146. data/glfw-src/lib/x11/platform.h +415 -0
  147. data/glfw-src/lib/x11/x11_enable.c +51 -0
  148. data/glfw-src/lib/x11/x11_fullscreen.c +524 -0
  149. data/glfw-src/lib/x11/x11_glext.c +69 -0
  150. data/glfw-src/lib/x11/x11_init.c +275 -0
  151. data/glfw-src/lib/x11/x11_joystick.c +371 -0
  152. data/glfw-src/lib/x11/x11_keysym2unicode.c +902 -0
  153. data/glfw-src/lib/x11/x11_thread.c +507 -0
  154. data/glfw-src/lib/x11/x11_time.c +154 -0
  155. data/glfw-src/lib/x11/x11_window.c +1746 -0
  156. data/glfw-src/license.txt +21 -0
  157. data/glfw-src/readme.html +927 -0
  158. data/glfw-src/support/d/examples/Makefile +59 -0
  159. data/glfw-src/support/d/examples/boing.d +610 -0
  160. data/glfw-src/support/d/examples/gears.d +379 -0
  161. data/glfw-src/support/d/examples/keytest.d +272 -0
  162. data/glfw-src/support/d/examples/listmodes.d +48 -0
  163. data/glfw-src/support/d/examples/mipmaps.d +126 -0
  164. data/glfw-src/support/d/examples/mtbench.d +304 -0
  165. data/glfw-src/support/d/examples/mthello.d +54 -0
  166. data/glfw-src/support/d/examples/particles.d +1150 -0
  167. data/glfw-src/support/d/examples/pong3d.d +840 -0
  168. data/glfw-src/support/d/examples/splitview.d +486 -0
  169. data/glfw-src/support/d/examples/triangle.d +108 -0
  170. data/glfw-src/support/d/examples/wave.d +400 -0
  171. data/glfw-src/support/d/imports/gl.d +4539 -0
  172. data/glfw-src/support/d/imports/glfw.d +349 -0
  173. data/glfw-src/support/d/imports/glu.d +328 -0
  174. data/glfw-src/support/d/lib/glfwdll.def +64 -0
  175. data/glfw-src/support/d/lib/glu32.def +56 -0
  176. data/glfw-src/support/d/lib/makefile +12 -0
  177. data/glfw-src/support/d/lib/opengl32.def +372 -0
  178. data/glfw-src/support/d/readme.html +83 -0
  179. data/glfw-src/support/delphi/examples/Triangle.dpr +105 -0
  180. data/glfw-src/support/delphi/lib/glfw.pas +437 -0
  181. data/glfw-src/support/delphi/readme.html +97 -0
  182. data/glfw-src/support/lua/examples/gears.lua +383 -0
  183. data/glfw-src/support/lua/examples/test1.lua +68 -0
  184. data/glfw-src/support/lua/readme.html +128 -0
  185. data/glfw-src/support/lua/src/luaglfw.c +1179 -0
  186. data/glfw-src/support/lua/src/luaglfw.h +48 -0
  187. data/glfw-src/support/lua/src/runlua.c +82 -0
  188. data/glfw-src/support/masm/examples/fpc.mac +47 -0
  189. data/glfw-src/support/masm/examples/makeit.bat +66 -0
  190. data/glfw-src/support/masm/examples/triangle.asm +232 -0
  191. data/glfw-src/support/masm/include/glfw.inc +326 -0
  192. data/glfw-src/support/masm/include/glu32.inc +55 -0
  193. data/glfw-src/support/masm/include/opengl32.inc +372 -0
  194. data/glfw-src/support/masm/lib/glfwdll.lib +0 -0
  195. data/glfw-src/support/masm/readme.html +170 -0
  196. data/glfw-src/support/msvc80/GLFW.sln +26 -0
  197. data/glfw-src/support/msvc80/GLFW.vcproj +257 -0
  198. data/glfw-src/support/msvc80/GLFWDLL.vcproj +287 -0
  199. data/glfw-src/support/visualbasic/bindings/glfw.bas +320 -0
  200. data/glfw-src/support/visualbasic/bindings/glu32.bas +284 -0
  201. data/glfw-src/support/visualbasic/bindings/opengl32.bas +999 -0
  202. data/glfw-src/support/visualbasic/examples/Triangle.bas +101 -0
  203. data/glfw-src/support/visualbasic/readme.html +164 -0
  204. data/website/index.html +84 -0
  205. data/website/style.css +110 -0
  206. metadata +301 -0
@@ -0,0 +1,341 @@
1
+ //========================================================================
2
+ // GLFW - An OpenGL framework
3
+ // File: platform.h
4
+ // Platform: DOS
5
+ // API version: 2.6
6
+ // WWW: http://glfw.sourceforge.net
7
+ //------------------------------------------------------------------------
8
+ // Copyright (c) 2002-2006 Camilla Berglund
9
+ //
10
+ // This software is provided 'as-is', without any express or implied
11
+ // warranty. In no event will the authors be held liable for any damages
12
+ // arising from the use of this software.
13
+ //
14
+ // Permission is granted to anyone to use this software for any purpose,
15
+ // including commercial applications, and to alter it and redistribute it
16
+ // freely, subject to the following restrictions:
17
+ //
18
+ // 1. The origin of this software must not be misrepresented; you must not
19
+ // claim that you wrote the original software. If you use this software
20
+ // in a product, an acknowledgment in the product documentation would
21
+ // be appreciated but is not required.
22
+ //
23
+ // 2. Altered source versions must be plainly marked as such, and must not
24
+ // be misrepresented as being the original software.
25
+ //
26
+ // 3. This notice may not be removed or altered from any source
27
+ // distribution.
28
+ //
29
+ //========================================================================
30
+
31
+ #ifndef _platform_h_
32
+ #define _platform_h_
33
+
34
+
35
+ // This is the DOS version of GLFW
36
+ #define _GLFW_DOS
37
+
38
+
39
+ // Include files
40
+ #include <stdio.h>
41
+ #include <stdlib.h>
42
+ #include <unistd.h>
43
+ #include <time.h>
44
+ #include <dos.h>
45
+ #include <dpmi.h>
46
+ #include <fcntl.h>
47
+ #include <pc.h>
48
+ #include <sys/stat.h>
49
+ #include <sys/exceptn.h>
50
+ #include <sys/farptr.h>
51
+ #include <sys/segments.h>
52
+
53
+ // GLFW+GL+GLU defines
54
+ #include "../../include/GL/glfw.h"
55
+
56
+ // DOS Mesa (include this AFTER gl.h!)
57
+ #include <GL/dmesa.h>
58
+
59
+
60
+ // Stack size for each thread (in bytes)
61
+ #define _GLFW_TASK_STACK_SIZE 50000
62
+
63
+
64
+
65
+
66
+ //========================================================================
67
+ // Global variables (GLFW internals)
68
+ //========================================================================
69
+
70
+
71
+ //------------------------------------------------------------------------
72
+ // Window structure
73
+ //------------------------------------------------------------------------
74
+ typedef struct _GLFWwin_struct _GLFWwin;
75
+
76
+ struct _GLFWwin_struct {
77
+
78
+ // ========= PLATFORM INDEPENDENT MANDATORY PART =========================
79
+
80
+ // User callback functions
81
+ GLFWwindowsizefun WindowSizeCallback;
82
+ GLFWwindowclosefun WindowCloseCallback;
83
+ GLFWwindowrefreshfun WindowRefreshCallback;
84
+ GLFWmousebuttonfun MouseButtonCallback;
85
+ GLFWmouseposfun MousePosCallback;
86
+ GLFWmousewheelfun MouseWheelCallback;
87
+ GLFWkeyfun KeyCallback;
88
+ GLFWcharfun CharCallback;
89
+
90
+ // User selected window settings
91
+ int Fullscreen; // Fullscreen flag
92
+ int MouseLock; // Mouse-lock flag
93
+ int AutoPollEvents; // Auto polling flag
94
+ int SysKeysDisabled; // System keys disabled flag
95
+ int WindowNoResize; // Resize- and maximize gadgets disabled flag
96
+
97
+ // Window status & parameters
98
+ int Opened; // Flag telling if window is opened or not
99
+ int Active; // Application active flag
100
+ int Iconified; // Window iconified flag
101
+ int Width, Height; // Window width and heigth
102
+ int Accelerated; // GL_TRUE if window is HW accelerated
103
+ int RedBits;
104
+ int GreenBits;
105
+ int BlueBits;
106
+ int AlphaBits;
107
+ int DepthBits;
108
+ int StencilBits;
109
+ int AccumRedBits;
110
+ int AccumGreenBits;
111
+ int AccumBlueBits;
112
+ int AccumAlphaBits;
113
+ int AuxBuffers;
114
+ int Stereo;
115
+ int RefreshRate; // Vertical monitor refresh rate
116
+
117
+ // Extensions & OpenGL version
118
+ int Has_GL_SGIS_generate_mipmap;
119
+ int Has_GL_ARB_texture_non_power_of_two;
120
+ int GLVerMajor,GLVerMinor;
121
+
122
+
123
+ // ========= PLATFORM SPECIFIC PART ======================================
124
+
125
+ // Platform specific window resources
126
+ DMesaVisual Visual;
127
+ DMesaContext Context;
128
+ DMesaBuffer Buffer;
129
+
130
+ // Standard output redirection
131
+ char OutName[L_tmpnam];
132
+ char ErrName[L_tmpnam];
133
+ int hOut,hOutOld,hErr,hErrOld;
134
+
135
+ // Platform specific extensions
136
+
137
+ // Various platform specific internal variables
138
+
139
+ };
140
+
141
+ GLFWGLOBAL _GLFWwin _glfwWin;
142
+
143
+
144
+ //------------------------------------------------------------------------
145
+ // User input status (most of this should go in _GLFWwin)
146
+ //------------------------------------------------------------------------
147
+ GLFWGLOBAL struct {
148
+
149
+ // ========= PLATFORM INDEPENDENT MANDATORY PART =========================
150
+
151
+ // Mouse status
152
+ int MousePosX, MousePosY;
153
+ int WheelPos;
154
+ char MouseButton[ GLFW_MOUSE_BUTTON_LAST+1 ];
155
+
156
+ // Keyboard status
157
+ char Key[ GLFW_KEY_LAST+1 ];
158
+ int LastChar;
159
+
160
+ // User selected settings
161
+ int StickyKeys;
162
+ int StickyMouseButtons;
163
+ int KeyRepeat;
164
+
165
+
166
+ // ========= PLATFORM SPECIFIC PART ======================================
167
+
168
+ // Platform specific internal variables
169
+
170
+ } _glfwInput;
171
+
172
+
173
+ //------------------------------------------------------------------------
174
+ // Timer status
175
+ //------------------------------------------------------------------------
176
+ GLFWGLOBAL struct {
177
+ double Period;
178
+ long long t0;
179
+ int HasRDTSC;
180
+ } _glfwTimer;
181
+
182
+
183
+ //------------------------------------------------------------------------
184
+ // Thread record (one for each thread)
185
+ //------------------------------------------------------------------------
186
+ typedef struct _GLFWthread_struct _GLFWthread;
187
+
188
+ struct _GLFWthread_struct {
189
+
190
+ // ========= PLATFORM INDEPENDENT MANDATORY PART =========================
191
+
192
+ // Pointer to previous and next threads in linked list
193
+ _GLFWthread *Previous, *Next;
194
+
195
+ // GLFW user side thread information
196
+ GLFWthread ID;
197
+
198
+ // ========= PLATFORM SPECIFIC PART ======================================
199
+
200
+ // System side thread information
201
+ GLFWthreadfun Function;
202
+ void *Arg;
203
+ };
204
+
205
+
206
+ //------------------------------------------------------------------------
207
+ // General thread information
208
+ //------------------------------------------------------------------------
209
+ GLFWGLOBAL struct {
210
+
211
+ // ========= PLATFORM INDEPENDENT MANDATORY PART =========================
212
+
213
+ // Next thread ID to use (increments for every created thread)
214
+ GLFWthread NextID;
215
+
216
+ // First thread in linked list (always the main thread)
217
+ _GLFWthread First;
218
+
219
+ // ========= PLATFORM SPECIFIC PART ======================================
220
+
221
+ // Critical section lock
222
+
223
+ } _glfwThrd;
224
+
225
+
226
+ //------------------------------------------------------------------------
227
+ // Joystick information & state
228
+ //------------------------------------------------------------------------
229
+ GLFWGLOBAL struct {
230
+ int dummy;
231
+ } _glfwJoy;
232
+
233
+
234
+ //========================================================================
235
+ // Macros for encapsulating critical code sections (i.e. making parts
236
+ // of GLFW thread safe)
237
+ //========================================================================
238
+
239
+ // Thread list management
240
+ #define ENTER_THREAD_CRITICAL_SECTION \
241
+ ;
242
+ #define LEAVE_THREAD_CRITICAL_SECTION \
243
+ ;
244
+
245
+
246
+ //========================================================================
247
+ // DOS events
248
+ //========================================================================
249
+
250
+ // Valid event types
251
+ #define _GLFW_DOS_KEY_EVENT 1
252
+ #define _GLFW_DOS_MOUSE_MOVE_EVENT 2
253
+ #define _GLFW_DOS_MOUSE_WHEEL_EVENT 3
254
+ #define _GLFW_DOS_MOUSE_BUTTON_EVENT 4
255
+
256
+ // Keyboard event structure
257
+ struct key_event {
258
+ int Type;
259
+ int Key;
260
+ int KeyNoMod;
261
+ int Action;
262
+ };
263
+
264
+ // Mouse move event structure
265
+ struct mousemove_event {
266
+ int Type;
267
+ int DeltaX, DeltaY;
268
+ };
269
+
270
+ // Mouse wheel event structure
271
+ struct mousewheel_event {
272
+ int Type;
273
+ int WheelDelta;
274
+ };
275
+
276
+ // Mouse button event structure
277
+ struct mousebutton_event {
278
+ int Type;
279
+ int Button;
280
+ int Action;
281
+ };
282
+
283
+ // DOS event structure
284
+ typedef union {
285
+ int Type;
286
+ struct key_event Key;
287
+ struct mousemove_event MouseMove;
288
+ struct mousewheel_event MouseWheel;
289
+ struct mousebutton_event MouseButton;
290
+ } _GLFWdosevent;
291
+
292
+
293
+
294
+ //========================================================================
295
+ // Prototypes for platform specific internal functions
296
+ //========================================================================
297
+
298
+ // Time
299
+ int _glfwInitTimer( void );
300
+ void _glfwTerminateTimer( void );
301
+
302
+ // Fullscreen
303
+
304
+ // Events
305
+ int _glfwInitEvents( void );
306
+ void _glfwTerminateEvents( void );
307
+ void _glfwWaitNextEvent( void );
308
+ int _glfwGetNextEvent( _GLFWdosevent *event );
309
+ void _glfwPostDOSEvent( _GLFWdosevent *event );
310
+
311
+ // Mouse
312
+ int _glfwInitMouse( void );
313
+ void _glfwTerminateMouse( void );
314
+
315
+ // Keyboard
316
+ int _glfwInitKeyboard( void );
317
+ void _glfwTerminateKeyboard( void );
318
+
319
+ // Joystick
320
+ void _glfwInitJoysticks( void );
321
+ void _glfwTerminateJoysticks( void );
322
+
323
+ // Threads
324
+ int _glfwInitThreads( void );
325
+ void _glfwTerminateThreads( void );
326
+
327
+ // Interrupt handling
328
+ int _glfwInstallDOSIrq( int i, int (*handler) () );
329
+ int _glfwRemoveDOSIrq( int i );
330
+
331
+ // Interrupt macros
332
+ #define ENABLE() __asm __volatile("sti")
333
+ #define DISABLE() __asm __volatile("cli")
334
+
335
+ // Memory macros (for locking memory)
336
+ #define ENDOFUNC(x) static void x##_end() { }
337
+ #define LOCKFUNC(x) _go32_dpmi_lock_code((void *)x, (long)x##_end - (long)x)
338
+ #define LOCKDATA(x) _go32_dpmi_lock_data((void *)&x, sizeof(x))
339
+ #define LOCKBUFF(x, l) _go32_dpmi_lock_data((void *)x, l)
340
+
341
+ #endif // _platform_h_
@@ -0,0 +1,295 @@
1
+ //========================================================================
2
+ // GLFW - An OpenGL framework
3
+ // File: enable.c
4
+ // Platform: Any
5
+ // API version: 2.6
6
+ // WWW: http://glfw.sourceforge.net
7
+ //------------------------------------------------------------------------
8
+ // Copyright (c) 2002-2006 Camilla Berglund
9
+ //
10
+ // This software is provided 'as-is', without any express or implied
11
+ // warranty. In no event will the authors be held liable for any damages
12
+ // arising from the use of this software.
13
+ //
14
+ // Permission is granted to anyone to use this software for any purpose,
15
+ // including commercial applications, and to alter it and redistribute it
16
+ // freely, subject to the following restrictions:
17
+ //
18
+ // 1. The origin of this software must not be misrepresented; you must not
19
+ // claim that you wrote the original software. If you use this software
20
+ // in a product, an acknowledgment in the product documentation would
21
+ // be appreciated but is not required.
22
+ //
23
+ // 2. Altered source versions must be plainly marked as such, and must not
24
+ // be misrepresented as being the original software.
25
+ //
26
+ // 3. This notice may not be removed or altered from any source
27
+ // distribution.
28
+ //
29
+ //========================================================================
30
+
31
+ #include "internal.h"
32
+
33
+
34
+ //************************************************************************
35
+ //**** GLFW internal functions ****
36
+ //************************************************************************
37
+
38
+ //========================================================================
39
+ // Enable (show) mouse cursor
40
+ //========================================================================
41
+
42
+ static void _glfwEnableMouseCursor( void )
43
+ {
44
+ int CenterPosX, CenterPosY;
45
+
46
+ if( !_glfwWin.Opened || !_glfwWin.MouseLock )
47
+ {
48
+ return;
49
+ }
50
+
51
+ // Show mouse cursor
52
+ _glfwPlatformShowMouseCursor();
53
+
54
+ CenterPosX = _glfwWin.Width / 2;
55
+ CenterPosY = _glfwWin.Height / 2;
56
+
57
+ if( CenterPosX != _glfwInput.MousePosX || CenterPosY != _glfwInput.MousePosY )
58
+ {
59
+ _glfwPlatformSetMouseCursorPos( CenterPosX, CenterPosY );
60
+
61
+ _glfwInput.MousePosX = CenterPosX;
62
+ _glfwInput.MousePosY = CenterPosY;
63
+
64
+ if( _glfwWin.MousePosCallback )
65
+ {
66
+ _glfwWin.MousePosCallback( _glfwInput.MousePosX,
67
+ _glfwInput.MousePosY );
68
+ }
69
+ }
70
+
71
+ // From now on the mouse is unlocked
72
+ _glfwWin.MouseLock = GL_FALSE;
73
+ }
74
+
75
+ //========================================================================
76
+ // Disable (hide) mouse cursor
77
+ //========================================================================
78
+
79
+ static void _glfwDisableMouseCursor( void )
80
+ {
81
+ if( !_glfwWin.Opened || _glfwWin.MouseLock )
82
+ {
83
+ return;
84
+ }
85
+
86
+ // Hide mouse cursor
87
+ _glfwPlatformHideMouseCursor();
88
+
89
+ // Move cursor to the middle of the window
90
+ _glfwPlatformSetMouseCursorPos( _glfwWin.Width>>1,
91
+ _glfwWin.Height>>1 );
92
+
93
+ // From now on the mouse is locked
94
+ _glfwWin.MouseLock = GL_TRUE;
95
+ }
96
+
97
+
98
+ //========================================================================
99
+ // _glfwEnableStickyKeys() - Enable sticky keys
100
+ // _glfwDisableStickyKeys() - Disable sticky keys
101
+ //========================================================================
102
+
103
+ static void _glfwEnableStickyKeys( void )
104
+ {
105
+ _glfwInput.StickyKeys = 1;
106
+ }
107
+
108
+ static void _glfwDisableStickyKeys( void )
109
+ {
110
+ int i;
111
+
112
+ _glfwInput.StickyKeys = 0;
113
+
114
+ // Release all sticky keys
115
+ for( i = 0; i <= GLFW_KEY_LAST; i ++ )
116
+ {
117
+ if( _glfwInput.Key[ i ] == 2 )
118
+ {
119
+ _glfwInput.Key[ i ] = 0;
120
+ }
121
+ }
122
+ }
123
+
124
+
125
+ //========================================================================
126
+ // _glfwEnableStickyMouseButtons() - Enable sticky mouse buttons
127
+ // _glfwDisableStickyMouseButtons() - Disable sticky mouse buttons
128
+ //========================================================================
129
+
130
+ static void _glfwEnableStickyMouseButtons( void )
131
+ {
132
+ _glfwInput.StickyMouseButtons = 1;
133
+ }
134
+
135
+ static void _glfwDisableStickyMouseButtons( void )
136
+ {
137
+ int i;
138
+
139
+ _glfwInput.StickyMouseButtons = 0;
140
+
141
+ // Release all sticky mouse buttons
142
+ for( i = 0; i <= GLFW_MOUSE_BUTTON_LAST; i ++ )
143
+ {
144
+ if( _glfwInput.MouseButton[ i ] == 2 )
145
+ {
146
+ _glfwInput.MouseButton[ i ] = 0;
147
+ }
148
+ }
149
+ }
150
+
151
+
152
+ //========================================================================
153
+ // _glfwEnableSystemKeys() - Enable system keys
154
+ // _glfwDisableSystemKeys() - Disable system keys
155
+ //========================================================================
156
+
157
+ static void _glfwEnableSystemKeys( void )
158
+ {
159
+ if( !_glfwWin.SysKeysDisabled )
160
+ {
161
+ return;
162
+ }
163
+
164
+ _glfwPlatformEnableSystemKeys();
165
+
166
+ // Indicate that system keys are no longer disabled
167
+ _glfwWin.SysKeysDisabled = GL_FALSE;
168
+ }
169
+
170
+ static void _glfwDisableSystemKeys( void )
171
+ {
172
+ if( _glfwWin.SysKeysDisabled )
173
+ {
174
+ return;
175
+ }
176
+
177
+ _glfwPlatformDisableSystemKeys();
178
+
179
+ // Indicate that system keys are now disabled
180
+ _glfwWin.SysKeysDisabled = GL_TRUE;
181
+ }
182
+
183
+
184
+ //========================================================================
185
+ // _glfwEnableKeyRepeat() - Enable key repeat
186
+ // _glfwDisableKeyRepeat() - Disable key repeat
187
+ //========================================================================
188
+
189
+ static void _glfwEnableKeyRepeat( void )
190
+ {
191
+ _glfwInput.KeyRepeat = 1;
192
+ }
193
+
194
+ static void _glfwDisableKeyRepeat( void )
195
+ {
196
+ _glfwInput.KeyRepeat = 0;
197
+ }
198
+
199
+
200
+ //========================================================================
201
+ // _glfwEnableAutoPollEvents() - Enable automatic event polling
202
+ // _glfwDisableAutoPollEvents() - Disable automatic event polling
203
+ //========================================================================
204
+
205
+ static void _glfwEnableAutoPollEvents( void )
206
+ {
207
+ _glfwWin.AutoPollEvents = 1;
208
+ }
209
+
210
+ static void _glfwDisableAutoPollEvents( void )
211
+ {
212
+ _glfwWin.AutoPollEvents = 0;
213
+ }
214
+
215
+
216
+
217
+ //************************************************************************
218
+ //**** GLFW user functions ****
219
+ //************************************************************************
220
+
221
+ //========================================================================
222
+ // glfwEnable() - Enable certain GLFW/window/system functions.
223
+ //========================================================================
224
+
225
+ GLFWAPI void GLFWAPIENTRY glfwEnable( int token )
226
+ {
227
+ // Is GLFW initialized?
228
+ if( !_glfwInitialized )
229
+ {
230
+ return;
231
+ }
232
+
233
+ switch( token )
234
+ {
235
+ case GLFW_MOUSE_CURSOR:
236
+ _glfwEnableMouseCursor();
237
+ break;
238
+ case GLFW_STICKY_KEYS:
239
+ _glfwEnableStickyKeys();
240
+ break;
241
+ case GLFW_STICKY_MOUSE_BUTTONS:
242
+ _glfwEnableStickyMouseButtons();
243
+ break;
244
+ case GLFW_SYSTEM_KEYS:
245
+ _glfwEnableSystemKeys();
246
+ break;
247
+ case GLFW_KEY_REPEAT:
248
+ _glfwEnableKeyRepeat();
249
+ break;
250
+ case GLFW_AUTO_POLL_EVENTS:
251
+ _glfwEnableAutoPollEvents();
252
+ break;
253
+ default:
254
+ break;
255
+ }
256
+ }
257
+
258
+
259
+ //========================================================================
260
+ // glfwDisable() - Disable certain GLFW/window/system functions.
261
+ //========================================================================
262
+
263
+ GLFWAPI void GLFWAPIENTRY glfwDisable( int token )
264
+ {
265
+ // Is GLFW initialized?
266
+ if( !_glfwInitialized )
267
+ {
268
+ return;
269
+ }
270
+
271
+ switch( token )
272
+ {
273
+ case GLFW_MOUSE_CURSOR:
274
+ _glfwDisableMouseCursor();
275
+ break;
276
+ case GLFW_STICKY_KEYS:
277
+ _glfwDisableStickyKeys();
278
+ break;
279
+ case GLFW_STICKY_MOUSE_BUTTONS:
280
+ _glfwDisableStickyMouseButtons();
281
+ break;
282
+ case GLFW_SYSTEM_KEYS:
283
+ _glfwDisableSystemKeys();
284
+ break;
285
+ case GLFW_KEY_REPEAT:
286
+ _glfwDisableKeyRepeat();
287
+ break;
288
+ case GLFW_AUTO_POLL_EVENTS:
289
+ _glfwDisableAutoPollEvents();
290
+ break;
291
+ default:
292
+ break;
293
+ }
294
+ }
295
+