1 //======================================================================== 2 // GLFW - An OpenGL framework 3 // Platform: Delphi/FPC + Windows/Linux/Mac OS 4 // API version: 2.7 5 // WWW: http://www.glfw.org/ 6 //------------------------------------------------------------------------ 7 // Copyright (c) 2002-2006 Marcus Geelnard 8 // Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org> 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 unit glfw; 32 33 // Use standard linking method 34 // This means links dynamically to glfw.dll on Windows, glfw.so on Linux 35 // and statically on Mac OS X 36 // 37 // If you don't like that, comment this define 38 {$DEFINE LINK_STANDARD} 39 40 // If the define above is commented, remove the dot on your favorite option 41 {.$DEFINE LINK_DYNAMIC} 42 {.$DEFINE LINK_STATIC} 43 44 45 {$IFDEF FPC} 46 {$MODE DELPHI} 47 {$ENDIF} 48 49 interface 50 51 const 52 53 //======================================================================== 54 // GLFW version 55 //======================================================================== 56 GLFW_VERSION_MAJOR = 2; 57 GLFW_VERSION_MINOR = 7; 58 GLFW_VERSION_REVISION = 9; 59 60 //======================================================================== 61 // Input handling definitions 62 //======================================================================== 63 64 // Key and button state/action definitions 65 GLFW_RELEASE = 0; 66 GLFW_PRESS = 1; 67 68 // Keyboard key definitions: 8-bit ISO-8859-1 (Latin 1) encoding is used 69 // for printable keys (such as A-Z, 0-9 etc), and values above 256 70 // represent special (non-printable) keys (e.g. F1, Page Up etc). 71 GLFW_KEY_UNKNOWN = -1; 72 GLFW_KEY_SPACE = 32; 73 GLFW_KEY_SPECIAL = 256; 74 GLFW_KEY_ESC = (GLFW_KEY_SPECIAL+1); 75 GLFW_KEY_F1 = (GLFW_KEY_SPECIAL+2); 76 GLFW_KEY_F2 = (GLFW_KEY_SPECIAL+3); 77 GLFW_KEY_F3 = (GLFW_KEY_SPECIAL+4); 78 GLFW_KEY_F4 = (GLFW_KEY_SPECIAL+5); 79 GLFW_KEY_F5 = (GLFW_KEY_SPECIAL+6); 80 GLFW_KEY_F6 = (GLFW_KEY_SPECIAL+7); 81 GLFW_KEY_F7 = (GLFW_KEY_SPECIAL+8); 82 GLFW_KEY_F8 = (GLFW_KEY_SPECIAL+9); 83 GLFW_KEY_F9 = (GLFW_KEY_SPECIAL+10); 84 GLFW_KEY_F10 = (GLFW_KEY_SPECIAL+11); 85 GLFW_KEY_F11 = (GLFW_KEY_SPECIAL+12); 86 GLFW_KEY_F12 = (GLFW_KEY_SPECIAL+13); 87 GLFW_KEY_F13 = (GLFW_KEY_SPECIAL+14); 88 GLFW_KEY_F14 = (GLFW_KEY_SPECIAL+15); 89 GLFW_KEY_F15 = (GLFW_KEY_SPECIAL+16); 90 GLFW_KEY_F16 = (GLFW_KEY_SPECIAL+17); 91 GLFW_KEY_F17 = (GLFW_KEY_SPECIAL+18); 92 GLFW_KEY_F18 = (GLFW_KEY_SPECIAL+19); 93 GLFW_KEY_F19 = (GLFW_KEY_SPECIAL+20); 94 GLFW_KEY_F20 = (GLFW_KEY_SPECIAL+21); 95 GLFW_KEY_F21 = (GLFW_KEY_SPECIAL+22); 96 GLFW_KEY_F22 = (GLFW_KEY_SPECIAL+23); 97 GLFW_KEY_F23 = (GLFW_KEY_SPECIAL+24); 98 GLFW_KEY_F24 = (GLFW_KEY_SPECIAL+25); 99 GLFW_KEY_F25 = (GLFW_KEY_SPECIAL+26); 100 GLFW_KEY_UP = (GLFW_KEY_SPECIAL+27); 101 GLFW_KEY_DOWN = (GLFW_KEY_SPECIAL+28); 102 GLFW_KEY_LEFT = (GLFW_KEY_SPECIAL+29); 103 GLFW_KEY_RIGHT = (GLFW_KEY_SPECIAL+30); 104 GLFW_KEY_LSHIFT = (GLFW_KEY_SPECIAL+31); 105 GLFW_KEY_RSHIFT = (GLFW_KEY_SPECIAL+32); 106 GLFW_KEY_LCTRL = (GLFW_KEY_SPECIAL+33); 107 GLFW_KEY_RCTRL = (GLFW_KEY_SPECIAL+34); 108 GLFW_KEY_LALT = (GLFW_KEY_SPECIAL+35); 109 GLFW_KEY_RALT = (GLFW_KEY_SPECIAL+36); 110 GLFW_KEY_TAB = (GLFW_KEY_SPECIAL+37); 111 GLFW_KEY_ENTER = (GLFW_KEY_SPECIAL+38); 112 GLFW_KEY_BACKSPACE = (GLFW_KEY_SPECIAL+39); 113 GLFW_KEY_INSERT = (GLFW_KEY_SPECIAL+40); 114 GLFW_KEY_DEL = (GLFW_KEY_SPECIAL+41); 115 GLFW_KEY_PAGEUP = (GLFW_KEY_SPECIAL+42); 116 GLFW_KEY_PAGEDOWN = (GLFW_KEY_SPECIAL+43); 117 GLFW_KEY_HOME = (GLFW_KEY_SPECIAL+44); 118 GLFW_KEY_END = (GLFW_KEY_SPECIAL+45); 119 GLFW_KEY_KP_0 = (GLFW_KEY_SPECIAL+46); 120 GLFW_KEY_KP_1 = (GLFW_KEY_SPECIAL+47); 121 GLFW_KEY_KP_2 = (GLFW_KEY_SPECIAL+48); 122 GLFW_KEY_KP_3 = (GLFW_KEY_SPECIAL+49); 123 GLFW_KEY_KP_4 = (GLFW_KEY_SPECIAL+50); 124 GLFW_KEY_KP_5 = (GLFW_KEY_SPECIAL+51); 125 GLFW_KEY_KP_6 = (GLFW_KEY_SPECIAL+52); 126 GLFW_KEY_KP_7 = (GLFW_KEY_SPECIAL+53); 127 GLFW_KEY_KP_8 = (GLFW_KEY_SPECIAL+54); 128 GLFW_KEY_KP_9 = (GLFW_KEY_SPECIAL+55); 129 GLFW_KEY_KP_DIVIDE = (GLFW_KEY_SPECIAL+56); 130 GLFW_KEY_KP_MULTIPLY = (GLFW_KEY_SPECIAL+57); 131 GLFW_KEY_KP_SUBTRACT = (GLFW_KEY_SPECIAL+58); 132 GLFW_KEY_KP_ADD = (GLFW_KEY_SPECIAL+59); 133 GLFW_KEY_KP_DECIMAL = (GLFW_KEY_SPECIAL+60); 134 GLFW_KEY_KP_EQUAL = (GLFW_KEY_SPECIAL+61); 135 GLFW_KEY_KP_ENTER = (GLFW_KEY_SPECIAL+62); 136 GLFW_KEY_KP_NUM_LOCK = (GLFW_KEY_SPECIAL+63); 137 GLFW_KEY_CAPS_LOCK = (GLFW_KEY_SPECIAL+64); 138 GLFW_KEY_SCROLL_LOCK = (GLFW_KEY_SPECIAL+65); 139 GLFW_KEY_PAUSE = (GLFW_KEY_SPECIAL+66); 140 GLFW_KEY_LSUPER = (GLFW_KEY_SPECIAL+67); 141 GLFW_KEY_RSUPER = (GLFW_KEY_SPECIAL+68); 142 GLFW_KEY_MENU = (GLFW_KEY_SPECIAL+69); 143 GLFW_KEY_LAST = GLFW_KEY_MENU; 144 145 // Mouse button definitions 146 GLFW_MOUSE_BUTTON_1 = 0; 147 GLFW_MOUSE_BUTTON_2 = 1; 148 GLFW_MOUSE_BUTTON_3 = 2; 149 GLFW_MOUSE_BUTTON_4 = 3; 150 GLFW_MOUSE_BUTTON_5 = 4; 151 GLFW_MOUSE_BUTTON_6 = 5; 152 GLFW_MOUSE_BUTTON_7 = 6; 153 GLFW_MOUSE_BUTTON_8 = 7; 154 GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8; 155 156 // Mouse button aliases 157 GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1; 158 GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2; 159 GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3; 160 161 // Joystick identifiers 162 GLFW_JOYSTICK_1 = 0; 163 GLFW_JOYSTICK_2 = 1; 164 GLFW_JOYSTICK_3 = 2; 165 GLFW_JOYSTICK_4 = 3; 166 GLFW_JOYSTICK_5 = 4; 167 GLFW_JOYSTICK_6 = 5; 168 GLFW_JOYSTICK_7 = 6; 169 GLFW_JOYSTICK_8 = 7; 170 GLFW_JOYSTICK_9 = 8; 171 GLFW_JOYSTICK_10 = 9; 172 GLFW_JOYSTICK_11 = 10; 173 GLFW_JOYSTICK_12 = 11; 174 GLFW_JOYSTICK_13 = 12; 175 GLFW_JOYSTICK_14 = 13; 176 GLFW_JOYSTICK_15 = 14; 177 GLFW_JOYSTICK_16 = 15; 178 GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16; 179 180 181 //======================================================================== 182 // Other definitions 183 //======================================================================== 184 185 // glfwOpenWindow modes 186 GLFW_WINDOW = $00010001; 187 GLFW_FULLSCREEN = $00010002; 188 189 // glfwGetWindowParam tokens 190 GLFW_OPENED = $00020001; 191 GLFW_ACTIVE = $00020002; 192 GLFW_ICONIFIED = $00020003; 193 GLFW_ACCELERATED = $00020004; 194 GLFW_RED_BITS = $00020005; 195 GLFW_GREEN_BITS = $00020006; 196 GLFW_BLUE_BITS = $00020007; 197 GLFW_ALPHA_BITS = $00020008; 198 GLFW_DEPTH_BITS = $00020009; 199 GLFW_STENCIL_BITS = $0002000A; 200 201 // The following constants are used for both glfwGetWindowParam 202 // and glfwOpenWindowHint 203 GLFW_REFRESH_RATE = $0002000B; 204 GLFW_ACCUM_RED_BITS = $0002000C; 205 GLFW_ACCUM_GREEN_BITS = $0002000D; 206 GLFW_ACCUM_BLUE_BITS = $0002000E; 207 GLFW_ACCUM_ALPHA_BITS = $0002000F; 208 GLFW_AUX_BUFFERS = $00020010; 209 GLFW_STEREO = $00020011; 210 GLFW_WINDOW_NO_RESIZE = $00020012; 211 GLFW_FSAA_SAMPLES = $00020013; 212 GLFW_OPENGL_VERSION_MAJOR = $00020014; 213 GLFW_OPENGL_VERSION_MINOR = $00020015; 214 GLFW_OPENGL_FORWARD_COMPAT= $00020016; 215 GLFW_DEBUG_CONTEXT = $00020017; 216 GLFW_OPENGL_PROFILE = $00020018; 217 218 // GLFW_OPENGL_PROFILE tokens 219 GLFW_OPENGL_CORE_PROFILE = $00050001; 220 GLFW_OPENGL_COMPAT_PROFILE = $00050002; 221 222 // glfwEnable/glfwDisable tokens 223 GLFW_MOUSE_CURSOR = $00030001; 224 GLFW_STICKY_KEYS = $00030002; 225 GLFW_STICKY_MOUSE_BUTTONS = $00030003; 226 GLFW_SYSTEM_KEYS = $00030004; 227 GLFW_KEY_REPEAT = $00030005; 228 GLFW_AUTO_POLL_EVENTS = $00030006; 229 230 // glfwWaitThread wait modes 231 GLFW_WAIT = $00040001; 232 GLFW_NOWAIT = $00040002; 233 234 // glfwGetJoystickParam tokens 235 GLFW_PRESENT = $00050001; 236 GLFW_AXES = $00050002; 237 GLFW_BUTTONS = $00050003; 238 239 // glfwReadImage/glfwLoadTexture2D flags 240 GLFW_NO_RESCALE_BIT = $00000001; // Only for glfwReadImage 241 GLFW_ORIGIN_UL_BIT = $00000002; 242 GLFW_BUILD_MIPMAPS_BIT = $00000004; // Only for glfwLoadTexture2D 243 GLFW_ALPHA_MAP_BIT = $00000008; 244 245 // Time spans longer than this (seconds) are considered to be infinity 246 GLFW_INFINITY = 100000.0; 247 248 249 //======================================================================== 250 // Typedefs 251 //======================================================================== 252 253 type 254 255 // The video mode structure used by glfwGetVideoModes() 256 GLFWvidmode = packed record 257 Width, Height : Integer; 258 RedBits, BlueBits, GreenBits: Integer; 259 end; 260 PGLFWvidmode = ^GLFWvidmode; 261 262 // Image/texture information 263 GLFWimage = packed record 264 Width, Height: Integer; 265 Format : Integer; 266 BytesPerPixel: Integer; 267 Data : PChar; 268 end; 269 PGLFWimage = ^GLFWimage; 270 271 // Thread ID 272 GLFWthread = Integer; 273 274 // Mutex object 275 GLFWmutex = Pointer; 276 277 // Condition variable object 278 GLFWcond = Pointer; 279 280 // Function pointer types 281 GLFWwindowsizefun = procedure(Width, Height: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 282 GLFWwindowclosefun = function: Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 283 GLFWwindowrefreshfun = procedure; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 284 GLFWmousebuttonfun = procedure(Button, Action: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 285 GLFWmouseposfun = procedure(X, Y: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 286 GLFWmousewheelfun = procedure(Pos: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 287 GLFWkeyfun = procedure(Key, Action: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 288 GLFWcharfun = procedure(Character, Action: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 289 GLFWthreadfun = procedure(Arg: Pointer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} 290 291 292 //======================================================================== 293 // Prototypes 294 //======================================================================== 295 296 {$IFDEF LINK_DYNAMIC} 297 const 298 {$IFDEF WIN32} 299 DLLNAME = 'glfw.dll'; 300 {$ELSE} 301 {$IFDEF DARWIN} 302 DLLNAME = 'libglfw.dylib'; 303 {$ELSE} 304 DLLNAME = 'libglfw.so'; 305 {$ENDIF} 306 {$ENDIF} 307 {$ENDIF} 308 309 310 // GLFW initialization, termination and version querying 311 function glfwInit: Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 312 procedure glfwTerminate; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 313 procedure glfwGetVersion(var major: Integer; var minor: Integer; var Rev: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 314 315 // Window handling 316 function glfwOpenWindow(width, height, redbits, greenbits, bluebits, alphabits, depthbits, stencilbits, mode: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 317 procedure glfwOpenWindowHint(target, hint: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 318 procedure glfwCloseWindow; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 319 procedure glfwSetWindowTitle(title: PChar); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 320 procedure glfwGetWindowSize(var width: Integer; var height: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 321 procedure glfwSetWindowSize(width, height: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 322 procedure glfwSetWindowPos(x, y: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 323 procedure glfwIconifyWindow; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 324 procedure glfwRestoreWindow; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 325 procedure glfwSwapBuffers; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 326 procedure glfwSwapInterval(interval: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 327 function glfwGetWindowParam(Param: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 328 procedure glfwSetWindowSizeCallback(cbfun: GLFWwindowsizefun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 329 procedure glfwSetWindowCloseCallback(cbfun: GLFWwindowclosefun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 330 procedure glfwSetWindowRefreshCallback(cbfun: GLFWwindowrefreshfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 331 332 // Video mode functions 333 function glfwGetVideoModes(list: PGLFWvidmode; maxcount: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 334 procedure glfwGetDesktopMode(mode: PGLFWvidmode); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 335 336 // Input handling 337 procedure glfwPollEvents; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 338 procedure glfwWaitEvents; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 339 function glfwGetKey(key: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 340 function glfwGetMouseButton(button: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 341 procedure glfwGetMousePos(var xpos: Integer; var ypos: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 342 procedure glfwSetMousePos(xpos, ypos: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 343 function glfwGetMouseWheel: Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 344 procedure glfwSetMouseWheel(pos: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 345 procedure glfwSetKeyCallback( cbfun: GLFWkeyfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 346 procedure glfwSetCharCallback( cbfun: GLFWcharfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 347 procedure glfwSetMouseButtonCallback( cbfun: GLFWmousebuttonfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 348 procedure glfwSetMousePosCallback( cbfun: GLFWmouseposfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 349 procedure glfwSetMouseWheelCallback( cbfun: GLFWmousewheelfun); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 350 351 // Joystick input 352 function glfwGetJoystickParam(joy, param: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 353 function glfwGetJoystickPos(joy: Integer; var pos: Single; numaxes: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 354 function glfwGetJoystickButtons(joy: Integer; buttons: PChar; numbuttons: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 355 356 // Time 357 function glfwGetTime: Double; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 358 procedure glfwSetTime(time: Double); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 359 procedure glfwSleep(time: Double); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 360 361 // Extension support 362 function glfwExtensionSupported(extension: PChar): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 363 function glfwGetProcAddress(procname: PChar): Pointer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 364 procedure glfwGetGLVersion(var major: Integer; var minor: Integer; var Rev: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 365 366 // Threading support 367 function glfwCreateThread(fun: GLFWthreadfun; arg: Pointer): GLFWthread; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 368 procedure glfwDestroyThread(Id: GLFWthread); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 369 function glfwWaitThread(Id: GLFWthread; waitmode: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 370 function glfwGetThreadID: GLFWthread; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 371 function glfwCreateMutex: GLFWmutex; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 372 procedure glfwDestroyMutex( mutex: GLFWmutex); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 373 procedure glfwLockMutex(mutex: GLFWmutex); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 374 procedure glfwUnlockMutex(mutex: GLFWmutex); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 375 function glfwCreateCond: GLFWcond; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 376 procedure glfwDestroyCond(cond: GLFWcond); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 377 procedure glfwWaitCond(cond: GLFWcond; mutex: GLFWmutex; timeout: Double); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 378 procedure glfwSignalCond(cond: GLFWcond); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 379 procedure glfwBroadcastCond(cond: GLFWcond); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 380 function glfwGetNumberOfProcessors: Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 381 382 // Enable/disable functions 383 procedure glfwEnable(token: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 384 procedure glfwDisable(token: Integer); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 385 386 // Image/texture I/O support 387 function glfwReadImage(name: PChar; image: PGLFWimage; flags: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 388 function glfwReadMemoryImage(data: Pointer; size: LongInt; img: PGLFWimage; flags: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 389 procedure glfwFreeImage(img: PGLFWimage); {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 390 function glfwLoadTexture2D(name: PChar; flags: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 391 function glfwLoadMemoryTexture2D(data: Pointer; size: LongInt; flags: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 392 function glfwLoadTextureImage2D(img: PGLFWimage; flags: Integer): Integer; {$IFDEF WIN32} stdcall; {$ELSE} cdecl; {$ENDIF} external {$IFDEF LINK_DYNAMIC} DLLNAME {$ENDIF}; 393 394 implementation 395 396 397 398 end. 399